我在安装我的一个python脚本时遇到问题。它具有以下结构:
myproject
setup.py
src
myproject
otherfolders
main.py
__init__.py
我的setup.py
创建了一个这样的入口点:
from setuptools import setup, find_packages
setup(name='mypackage',
version='2.4.0',
author='me',
author_email='...',
package_dir={'':'src'},
packages=find_packages('myproject'),
install_requires=[
"networkx",
"geopy",
"pyyaml"
],
zip_safe=False,
entry_points={
'console_scripts': [
'myproject=myproject.main:main',
],
},
)
现在,在使用sudo python setup.py install
成功安装后,我运行mypackage
并收到导入错误:No module named mypackage.main
。
我知道有很多类似的问题,我尝试了大多数/所有建议的解决方案here,例如,检查__init__.py
并设置PYTHONPATH
,但问题仍然存在。
我在两台不同的Ubuntu 16.04机器上运行它。
我很确定之前有效,但即使我回到之前的提交,它现在也无法正常工作。
编辑:我刚注意到该安装适用于develop
,但仍然失败了install
。这对任何人都有意义吗?
答案 0 :(得分:1)
问题出在find_packages()
:
某些项目使用src或lib目录作为其源代码树的根,并且这些项目当然会使用“ src”或“ lib”作为find_packages()的第一个参数。
因此,我不得不将find_packages('myproject')
更改为find_packages('src')
。
答案 1 :(得分:0)
packages = find_packages(' mypackage') - >包= find_packages(' myproject的&#39)。
另外你应该使用myproject.main。