考虑此应用:
.
├── LICENSE
├── MANIFEST.in
├── program
│ ├── apple.py
│ ├── __init__.py
│ ├── __main__.py
│ ├── nonfruit.py
│ ├── pear.py
│ ├── strawberry.py
│ └── vegetables
│ ├── carrot.py
│ ├── __init__.py
│ └── lettuce.py
├── README.md
├── setup.cfg
└── setup.py
__main__.py
是用户应该运行以使用我的程序的文件。我通过PyPI分发我的程序,所以我希望能够通过pip安装它。因此,我创建了一个带有入口点的setup.py
文件:
entry_points = {
'console_scripts': ['pg=program.__main__:main']}
我面临的问题是,我的程序中有几个导入,这些导入导致我的程序确实“本地”运行(通过执行python ./__main__.py
,而不是通过安装(通过运行pg
)。或者,取决于我导入它的方式,反之亦然
__main__.py
导入nonfruit.py
:
from nonfruit import Nonfruit
nonfruit.py
导入vegetables/carrot.py
:
import vegetables.carrot
ca = vegetables.carrot.Carrot()
我希望在构建项目时听到一些关于导入的建议,以便它在本地和安装setuptools时运行。例如,我应该使用绝对导入还是相对导入?我应该使用from X import Y
还是import X.Y
我在Jan-Philip Gehrcke's website上找到了一个解决方案
这些指令是为与Python3一起使用而编写的,但我成功地将其应用于Python2.7。我遇到的问题源于我的目录变成了一个包。Jan建议创建一个文件以从源(
bootstrap-runner.py
)运行它,并创建一个文件以从安装(bootstrap/__main__.py
)运行它。此外,他建议使用明确的相对进口:在我编写的下一个应用程序中,这可能是一个很好的指南
相关问题 更多 >
编程相关推荐