我正在开发一个应用程序,并希望使用“ setup.py development”将其放入活动的venv中。这不能正常工作。之后,Python找不到安装的依赖项。
如果我用它制作一个轮子并用pip安装,一切正常。
以下简短的安装日志。完整的输出会更长一些,但只是成功安装了一个接一个的软件包。
C:\Daten\pyv>py -3.7-32 -m venv v37-32
C:\Daten\pyv>v37-32\Scripts\activate
(v37-32) C:\Daten\pyv>cd ..\Projekte\i\IB4Application
(v37-32) C:\Daten\Projekte\I\IB4Application>python setup.py develop
running develop
Checking .pth file support in C:\Daten\pyv\v37-32\Lib\site-packages\
C:\Daten\pyv\v37-32\Scripts\pythonw.exe -E -c pass
TEST PASSED: C:\Daten\pyv\v37-32\Lib\site-packages\ appears to support .pth files
[...]
Installed c:\daten\projekte\i\ib4application
Processing dependencies for IB4Application==1.0
Searching for PyQt5<6
[...]
Installing PyQt5-5.11.3-5.11.2-cp35.cp36.cp37.cp38-none-win32.whl to c:\daten\pyv\v37-32\lib\site-packages
writing requirements to c:\daten\pyv\v37-32\lib\site-packages\PyQt5-5.11.3-py3.7-win32.egg\EGG-INFO\requires.txt
Adding PyQt5 5.11.3 to easy-install.pth file
[...依山傍水...]
Searching for PyQt5_sip<4.20,>=4.19.11
[...]
Installing PyQt5_sip-4.19.13-cp37-none-win32.whl to c:\daten\pyv\v37-32\lib\site-packages
Adding PyQt5-sip 4.19.13 to easy-install.pth file
[...依山傍水...]
Finished processing dependencies for IB4Application==1.0
现在安装已完成,我移出项目路径以避免意外的相对导入。
(v37-32) C:\Daten\Projekte\I\IB4Application\IB4Application>cd ..\..
我运行安装程序创建的包装器脚本,以便得到错误消息。
(v37-32) C:\Daten\Projekte\I>python ..\..\pyv\v37-32\Scripts\IB4Application-script.pyw
Traceback (most recent call last):
File "c:\daten\projekte\i\ib4application\IB4Application\main.py", line 17, in main
from . import app
File "c:\daten\projekte\i\ib4application\IB4Application\app.py", line 7, in <module>
from PyQt5.QtCore import QSize, QThread, QObject, pyqtSignal
ModuleNotFoundError: No module named 'PyQt5.sip'
如果我直接在REPL中import PyQt5.sip
,则会发生相同的错误。
venv的site-packages目录如下所示(没有其他所有依赖项):
2018-11-02 19:37 420 easy-install.pth
2018-11-02 19:37 126 easy_install.py
2018-11-02 19:37 37 IB4Application.egg-link
2018-11-02 19:37 <DIR> pip
2018-11-02 19:37 <DIR> pip-10.0.1.dist-info
2018-11-02 19:37 <DIR> pkg_resources
2018-11-02 19:37 <DIR> PyQt5-5.11.3-py3.7-win32.egg
2018-11-02 19:37 <DIR> PyQt5_sip-4.19.13-py3.7-win32.egg
2018-11-02 19:37 <DIR> setuptools
2018-11-02 19:37 <DIR> setuptools-39.0.1.dist-info
请注意,setup.py
将所有轮子安装为鸡蛋。 easy-install.pth
具有:
c:\daten\projekte\i\ib4application
./pyqt5-5.11.3-py3.7-win32.egg
./pyqt5_sip-4.19.13-py3.7-win32.egg
缺少的模块位于./pyqt5_sip-4.19.13-py3.7-win32.egg\PyQt5\sip.pyd
上,正是该模块在此环境中的位置。
如果我从空白的venv开始并使用pip安装应用程序的预制轮子,它将安装“ dist-info”样式的依赖项,而站点包的相关部分看起来像这样:
2018-11-02 19:56 <DIR> PyQt5
2018-11-02 19:56 <DIR> PyQt5-5.11.3.dist-info
2018-11-02 19:56 <DIR> PyQt5_sip-4.19.13.dist-info
现在可以运行该应用程序,但是没有setup.py develop
的特殊功能。
我尝试在procmon下运行Python,以查看它是否实际上在鸡蛋目录中,并发现在寻找easy-install.pth
时,它正在浏览PyQt5.sip
中的条目时,显然是有点困惑,因为它试图在每个目录中打开一个名为“
答案 0 :(得分:0)
这不是一个答案,但至少是一种解决方法。我刚刚发现了pip install -e .
,当然可以。