软件包的 pip 安装从源代码工作,从软件包失败



这是我的项目结构

~/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

(在一个新的新虚拟环境中)

并尝试运行它,它失败如下:

➢  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也有效:

my-appmy_app的cjange名称

main移至my_app

setup.py的变化

entry_points={
'console_scripts': [
'my-app=my_app.main:cli',
],

您的问题是您的main.py脚本不是包的一部分。 如果您通过方法pip install -e安装,则pip仅创建simlink并找到main.py文件。在正常安装中,不会复制它。

最新更新