这是我的项目结构
~/Workspace/my-app master ✗ ◒
➢ tree -L 2
.
├── build
│ ├── bdist.macosx-10.14-x86_64
│ └── lib
├── dist
│ ├── my-app-0.0.4a0.tar.gz
│ └── my_app-0.0.4a0-py3-none-any.whl
├── gkeconf
│ ├── __init__.py
│ ├── commands.py
│ └── messages.py
├── main.py
├── my-app
│ ├── __init__.py
├── my_app.egg-info
│ ├── PKG-INFO
│ ├── SOURCES.txt
│ ├── dependency_links.txt
│ ├── entry_points.txt
│ ├── requires.txt
│ └── top_level.txt
├── setup.cfg
└── setup.py
这是我的setup.py
entry_points={
'console_scripts': [
'my-app=main:cli',
],
当我从源代码目录执行时
pip install --editable .
运行时说my-app --version
有用。
当我通过以下方式构建软件包时
python3 setup.py sdist bdist_wheel
并通过
将其推送到我的私人仓库中python3 -m twine upload --verbose --repository my-private-repo dist/*
然后执行
pip install my-app
(在新的virtualenv中)
尝试运行它,失败如下:
➢ my-app --version
Traceback (most recent call last):
File "/Users/pkaramol/Desktop/.myvenv/bin/my-app", line 6, in <module>
from main import cli
ModuleNotFoundError: No module named 'main'
(.myvenv)
为什么?
MAJOR_UPDATE :看来--editable
标志有所作为。普通pip install .
会产生相同的错误!
编辑:来自其他路径的pip install --editable
也有效:
答案 0 :(得分:0)
从my-app
到my_app
的大名
将main
移至my_app
setup.py
的更改
entry_points={
'console_scripts': [
'my-app=my_app.main:cli',
],
您的问题是您的main.py
脚本不是软件包的一部分。
如果您通过方法pip install -e
安装,则pip仅创建simlink并找到main.py
文件。在正常安装中,它不会被复制。