ModuleNotFoundError: pip install 后没有名为 <modulename> 的模块

fat*_*fat 5 python setuptools virtualenv

我在 python 包分发中做了我的第一步。
不幸的是,我ModuleNotFoundError从 pip 成功安装后。

我的目录布局非常简单:

maindir
   |- setup.py
   |- pysoft
         |- __init__.py
         |- main.py
         |- pylib.py
Run Code Online (Sandbox Code Playgroud)

主要.py:

maindir
   |- setup.py
   |- pysoft
         |- __init__.py
         |- main.py
         |- pylib.py
Run Code Online (Sandbox Code Playgroud)

pylib.py:

import pylib


def main():
    print("main program")
    pylib.libfunc()


if __name__ == '__main__':
    main()

Run Code Online (Sandbox Code Playgroud)

设置.py:

def libfunc():
    print("lib func")
Run Code Online (Sandbox Code Playgroud)

我打包并上传到test.pypi.org

import setuptools


setuptools.setup(
    name='pysoft',
    version='0.0.21',
    author='als',
    author_email='als@gnail.com',
    description='deploy tester',
    py_modules=['pylib'],
    packages=setuptools.find_packages(),
    python_requires='>=3.6',
    entry_points={
        'console_scripts': [
            'pysoft = pysoft.main:main',
        ],
    },
)

Run Code Online (Sandbox Code Playgroud)

我设置并开始新的virtualenv并安装我的包:

python3 setup.py sdist bdist_wheel
python3 -m twine upload --repository-url https://test.pypi.org/legacy/ dist/*
Run Code Online (Sandbox Code Playgroud)

然后我尝试运行它,但出现错误:

 python3 -m pip install -i https://test.pypi.org/simple/ pysoft

Run Code Online (Sandbox Code Playgroud)

你能找出我哪里有错误的步骤吗?

phd*_*phd 4

您所做的import pylib就好像所说的pylib是顶级模块或包一样。但它不是 \xe2\x80\x94 它是包的子模块pysoft。为了正确导入,请执行以下操作:

\n\n
from pysoft import pylib\n
Run Code Online (Sandbox Code Playgroud)\n\n

py_modules=['pylib']在你的setup.py被忽略,因为setuptools找不到顶级pylib.py. 但packages=setuptools.find_packages()可以工作并将pysoft其包含到发行版中。

\n