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安装时会发生什么情况