【问题标题】:pip installation of package works from source, fails from package软件包的 pip 安装从源代码工作,从软件包失败
【发布时间】:2019-07-25 13:24:15
【问题描述】:

这是我的项目结构

~/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 也可以:

【问题讨论】:

  • 你不是在包的根目录中缺少__init__.pymain.py 所在的位置)吗?另外,你可以试试你从另一个地方发布的命令pip install --editable .,而不是源目录(当然是正确的路径,而不是.)?
  • 我在根项目级别添加了__init__.py,但没有成功
  • 你不应该从 main 导入。如果您的程序有多个入口点,它很容易破坏您的程序并且还会使其变得粘滞。如果您每个人都想将部分功能提取到独立库中,则必须重新定义应用程序中的每个孤立引用,以使其在应用程序之外可用。
  • @neko 我已经更新了我的答案,当我尝试从不同的仓库安装时会发生什么

标签: python python-3.x setuptools


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-16
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    • 2022-10-06
    • 1970-01-01
    • 2017-07-19
    相关资源
    最近更新 更多