我正在分发一个Python软件包,我已经编写了该软件包,并且在使用setuptools安装后访问它时遇到了问题。
该软件包的结构如下
mypackage
├── setup.py
├── mymodule
├── __init__.py
├── somefile.py
├── mysubmodule
├── __init__.py
├── entry_file.py
使用setuptools(40.7.0)安装后,它在我的本地 Windows 10 计算机上运行良好。但是,在具有完全相同的Python和pip软件包版本的 Windows 2012 Server R2 Standard 上,会出现以下错误:
PS C:\mypath\mypackage> mymodule
Traceback (most recent call last):
File "C:\Python36\Scripts\mymodule-script.py", line 11, in <module>
load_entry_point('mymodule==0.1.0', 'console_scripts', 'mymodule')()
File "C:\Python36\lib\site-packages\pkg_resources\__init__.py", line 487, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "C:\Python36\lib\site-packages\pkg_resources\__init__.py", line 2728, in load_entry_point
return ep.load()
File "C:\Python36\lib\site-packages\pkg_resources\__init__.py", line 2346, in load
return self.resolve()
File "C:\Python36\lib\site-packages\pkg_resources\__init__.py", line 2352, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
ModuleNotFoundError: No module named 'mymodule.mysubmodule'
从Windows服务器的软件包目录中的命令行启动Python并运行
>>> import mymodule
>>> mymodule.mysubmodule.entry_file.main()
可以找到mysubmodule
和entry_file.py
,程序将按预期运行。
我的setup.py
文件中的entry_point的配置如下
entry_points={
'console_scripts': ['mymodule=mymodule.mysubmodule.entry_file:main']
},
为什么安装在 Windows 2012 Server R2 Standard 上时找不到mysubmodule
,而C:\Python36\Scripts\mymodule-script.py
无法解析entry_point?