从源头安装软件包的点子安装,从软件包失败

时间:2019-07-25 13:24:15

标签: python python-3.x setuptools

这是我的项目结构

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

1 个答案:

答案 0 :(得分:0)

my-appmy_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文件。在正常安装中,它不会被复制。