1

I've succesfully installed darkflow-1.0.0 (https://github.com/thtrieu/darkflow) on the Windows 10 using the pip install . command.

Successfully built darkflow
Installing collected packages: darkflow
  Found existing installation: darkflow 1.0.0
    Uninstalling darkflow-1.0.0:
      Successfully uninstalled darkflow-1.0.0
Successfully installed darkflow-1.0.0

After this, I'm trying to run python flow --h, which gives me following error:

Traceback (most recent call last):
  File "flow", line 4, in <module>
    from darkflow.cli import cliHandler
  File "C:\Users\filda\Desktop\FIT_VUT\BP\YOLO\YOLO_keras\darkflow\darkflow\cli.py", line 3, in <module>
    from .net.build import TFNet
  File "C:\Users\filda\Desktop\FIT_VUT\BP\YOLO\YOLO_keras\darkflow\darkflow\net\build.py", line 7, in <module>
    from .framework import create_framework
  File "C:\Users\filda\Desktop\FIT_VUT\BP\YOLO\YOLO_keras\darkflow\darkflow\net\framework.py", line 1, in <module>
    from . import yolo
  File "C:\Users\filda\Desktop\FIT_VUT\BP\YOLO\YOLO_keras\darkflow\darkflow\net\yolo\__init__.py", line 2, in <module>
    from . import predict
  File "C:\Users\filda\Desktop\FIT_VUT\BP\YOLO\YOLO_keras\darkflow\darkflow\net\yolo\predict.py", line 7, in <module>
    from ...cython_utils.cy_yolo_findboxes import yolo_box_constructor
ModuleNotFoundError: No module named 'darkflow.cython_utils.cy_yolo_findboxes'

So i tried to build the Cython extensions using the python setup.py build_ext --inplace command, which gives me the following error:

(base) C:\Users\filda\Desktop\FIT_VUT\BP\YOLO\YOLO_keras\darkflow-master>python setup.py build_ext --inplace
running build_ext
building 'darkflow.cython_utils.nms' extension
creating build\temp.win-amd64-3.5
creating build\temp.win-amd64-3.5\Release
creating build\temp.win-amd64-3.5\Release\darkflow
creating build\temp.win-amd64-3.5\Release\darkflow\cython_utils
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\bin\HostX64\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MT -IC:\Users\filda\Anaconda3\lib\site-packages\numpy\core\include -IC:\Users\filda\Anaconda3\include -IC:\Users\filda\Anaconda3\include "-IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\Include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\ATLMFC\Include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\winrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" /Tcdarkflow/cython_utils/nms.c /Fobuild\temp.win-amd64-3.5\Release\darkflow/cython_utils/nms.obj
nms.c
c1: fatal error C1083: Cannot open source file: 'darkflow/cython_utils/nms.c': No such file or directory
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.15.26726\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2

pip show -f darkflow:

Name: darkflow
Version: 1.0.0
Summary: Darkflow
Home-page: https://github.com/thtrieu/darkflow
Author: UNKNOWN
Author-email: UNKNOWN
License: GPLv3
Location: c:\users\filda\anaconda3\lib\site-packages
Requires:
Required-by:
Files:
  ..\..\Scripts\flow
  darkflow-1.0.0.dist-info\INSTALLER
  darkflow-1.0.0.dist-info\METADATA
  darkflow-1.0.0.dist-info\RECORD
  darkflow-1.0.0.dist-info\WHEEL
  darkflow-1.0.0.dist-info\top_level.txt
  darkflow\__init__.py
  darkflow\__pycache__\__init__.cpython-35.pyc
  darkflow\__pycache__\cli.cpython-35.pyc
  darkflow\__pycache__\defaults.cpython-35.pyc
  darkflow\__pycache__\version.cpython-35.pyc
  darkflow\cli.py
  darkflow\cython_utils\__init__.py
  darkflow\cython_utils\__pycache__\__init__.cpython-35.pyc
  darkflow\cython_utils\cy_yolo2_findboxes.cp35-win_amd64.pyd
  darkflow\cython_utils\cy_yolo_findboxes.cp35-win_amd64.pyd
  darkflow\cython_utils\nms.cp35-win_amd64.pyd
  darkflow\dark\__init__.py
  darkflow\dark\__pycache__\__init__.cpython-35.pyc
  darkflow\dark\__pycache__\connected.cpython-35.pyc
  darkflow\dark\__pycache__\convolution.cpython-35.pyc
  darkflow\dark\__pycache__\darknet.cpython-35.pyc
  darkflow\dark\__pycache__\darkop.cpython-35.pyc
  darkflow\dark\__pycache__\layer.cpython-35.pyc
  darkflow\dark\connected.py
  darkflow\dark\convolution.py
  darkflow\dark\darknet.py
  darkflow\dark\darkop.py
  darkflow\dark\layer.py
  darkflow\defaults.py
  darkflow\net\__init__.py
  darkflow\net\__pycache__\__init__.cpython-35.pyc
  darkflow\net\__pycache__\build.cpython-35.pyc
  darkflow\net\__pycache__\flow.cpython-35.pyc
  darkflow\net\__pycache__\framework.cpython-35.pyc
  darkflow\net\__pycache__\help.cpython-35.pyc
  darkflow\net\build.py
  darkflow\net\flow.py
  darkflow\net\framework.py
  darkflow\net\help.py
  darkflow\net\ops\__init__.py
  darkflow\net\ops\__pycache__\__init__.cpython-35.pyc
  darkflow\net\ops\__pycache__\baseop.cpython-35.pyc
  darkflow\net\ops\__pycache__\convolution.cpython-35.pyc
  darkflow\net\ops\__pycache__\simple.cpython-35.pyc
  darkflow\net\ops\baseop.py
  darkflow\net\ops\convolution.py
  darkflow\net\ops\simple.py
  darkflow\net\vanilla\__init__.py
  darkflow\net\vanilla\__pycache__\__init__.cpython-35.pyc
  darkflow\net\vanilla\__pycache__\train.cpython-35.pyc
  darkflow\net\vanilla\train.py
  darkflow\net\yolo\__init__.py
  darkflow\net\yolo\__pycache__\__init__.cpython-35.pyc
  darkflow\net\yolo\__pycache__\data.cpython-35.pyc
  darkflow\net\yolo\__pycache__\misc.cpython-35.pyc
  darkflow\net\yolo\__pycache__\predict.cpython-35.pyc
  darkflow\net\yolo\__pycache__\train.cpython-35.pyc
  darkflow\net\yolo\data.py
  darkflow\net\yolo\misc.py
  darkflow\net\yolo\predict.py
  darkflow\net\yolo\train.py
  darkflow\net\yolov2\__init__.py
  darkflow\net\yolov2\__pycache__\__init__.cpython-35.pyc
  darkflow\net\yolov2\__pycache__\data.cpython-35.pyc
  darkflow\net\yolov2\__pycache__\predict.cpython-35.pyc
  darkflow\net\yolov2\__pycache__\train.cpython-35.pyc
  darkflow\net\yolov2\data.py
  darkflow\net\yolov2\predict.py
  darkflow\net\yolov2\train.py
  darkflow\utils\__init__.py
  darkflow\utils\__pycache__\__init__.cpython-35.pyc
  darkflow\utils\__pycache__\box.cpython-35.pyc
  darkflow\utils\__pycache__\im_transform.cpython-35.pyc
  darkflow\utils\__pycache__\loader.cpython-35.pyc
  darkflow\utils\__pycache__\pascal_voc_clean_xml.cpython-35.pyc
  darkflow\utils\__pycache__\process.cpython-35.pyc
  darkflow\utils\box.py
  darkflow\utils\im_transform.py
  darkflow\utils\loader.py
  darkflow\utils\pascal_voc_clean_xml.py
  darkflow\utils\process.py
  darkflow\version.py

I have made it working on linux, but still i would appreciate it working on windows as well. May somebode point me to right direction ?

kocica
  • 6,412
  • 2
  • 14
  • 35
  • `pip show -f darkflow`? – hoefling Oct 02 '18 at 23:12
  • @hoefling Question updated. – kocica Oct 03 '18 at 08:08
  • Have you tried `python ./flow --h` from inside the clone of the repo. Their Readme file says something about it – motjuste Oct 03 '18 at 08:13
  • Yeah, but since i can't install it locally with `python setup.py build_ext --inplace` command, i can't use the local `flow`. – kocica Oct 03 '18 at 08:33
  • Ok, so the extension module in question is compiled and installed - what do you get when trying to import it directly? smth like `cd %HOMEPATH% & python -c "from darkflow.cython_utils.cy_yolo_findboxes import yolo_box_constructor"` – hoefling Oct 03 '18 at 09:49
  • @hoefling I get nothing, so its imported correctly. – kocica Oct 03 '18 at 11:15
  • 1
    So it's a simple namespace clash, presumably because you're running your commands from the dir with the `darkflow` source code which overrides the installed one - running the `flow` command from any other dir should succeed. If you need to run the commands from the `darkflow` repository, you need the editable installation - uninstall `darkflow` and from the repo dir, run `pip install --editable .` – hoefling Oct 03 '18 at 11:29
  • Oh yeah, its working now. Could you post it as an answer so i may accept it ? Thanks. – kocica Oct 03 '18 at 13:15

1 Answers1

5

This is a name clash: you have successfully installed the package via pip install ., so now darkflow is available in sys.path via site-packages directory. However, when you run python script.py, the current working directory is prepended to sys.path, so if the current dir contains the package darkflow, it is selected before the one installed in site-packages. Since the source code directory doesn't contain the shared object, the script fails.

Solution is either to run the script from another directory, e.g.

cd %HOMEPATH% & flow -h

or, if you need to work with the code, reinstall the package in editable mode:

pip uninstall -y darkflow & cd path\to\darkflow-master & pip install -e .

This way, the shared objects will be compiled and placed along with the source code, so you can run flow from anywhere now.

hoefling
  • 59,418
  • 12
  • 147
  • 194