Python 包的pip安装从源代码开始工作,从包失败
这是我的项目结构Python 包的pip安装从源代码开始工作,从包失败,python,python-3.x,setuptools,Python,Python 3.x,Setuptools,这是我的项目结构 ~/Workspace/my-app master ✗ ◒ ➢ tree -L 2 . ├── build │ ├── bdist.macosx-10.14-x86_64 │ └── lib ├── dist │ ├──
~/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',
],
entry_points={
'console_scripts': [
'my-app=my_app.main:cli',
],
当我从源代码目录执行
pip install --editable .
运行say,myapp--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)
➢ 我的应用程序--版本
回溯(最近一次呼叫最后一次):
文件“/Users/pkaramol/Desktop/.myvenv/bin/my app”,第6行,在
从主导入cli
ModuleNotFoundError:没有名为“main”的模块
(.myvenv)
为什么?
主要更新:似乎是--editable
标志起了作用。普通的pip安装。
产生相同的错误
编辑:
pip安装--从其他路径可编辑
也可以使用:将名称从我的应用
更改为我的应用
将main
移动到myu应用程序
更改setup.py
entry_points={
'console_scripts': [
'my-app=main:cli',
],
entry_points={
'console_scripts': [
'my-app=my_app.main:cli',
],
您的问题是main.py
脚本不是包的一部分。
如果通过方法
pip install-e
安装If,那么pip只创建simlink并查找main.py
文件。在正常安装中,它不会被复制 c将名称从my app
更改为my\u app
将main
移动到myu应用程序
更改setup.py
entry_points={
'console_scripts': [
'my-app=main:cli',
],
entry_points={
'console_scripts': [
'my-app=my_app.main:cli',
],
您的问题是main.py
脚本不是包的一部分。
如果通过方法
pip install-e
安装If,那么pip只创建simlink并查找main.py
文件。在正常安装中,它不会被复制 您是否在包的根目录中(在main.py
所在的位置)缺少一个\uuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu?另外,您可以尝试一下命令pip install--editable.
您是从另一个地方发布的,但是源目录(当然是正确的路径,不是
)?我在根项目级别添加了\uu init\uuuuuupy
,但没有成功,您不应该从main导入。它很容易破坏您的程序,并且如果您的程序有多个入口点,它也会变得很粘。如果您都想将功能的某个子集提取到独立库中,您必须重新定义应用程序中的每个孤立引用,使其在应用程序之外可用。@neko我已更新了我的答案,说明了当我尝试从其他库安装时会发生什么情况。您是否在软件包(在main.py
中)?另外,您可以尝试一下命令pip install--editable.
您是从另一个地方发布的,但是源目录(当然是正确的路径,不是
)?我在根项目级别添加了\uu init\uuuuuupy
,但没有成功,您不应该从main导入。它很容易破坏您的程序,并且如果您的程序有多个入口点,它也会变得很粘。如果您想将功能的某些子集提取到独立库中,您必须重新定义应用程序中的每个孤立引用,使其在应用程序之外可用。@neko我已更新了我的答案,说明了当我尝试从其他repo安装时会发生什么情况