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)
你能找出我哪里有错误的步骤吗?
您所做的import pylib就好像所说的pylib是顶级模块或包一样。但它不是 \xe2\x80\x94 它是包的子模块pysoft。为了正确导入,请执行以下操作:
from pysoft import pylib\nRun Code Online (Sandbox Code Playgroud)\n\npy_modules=['pylib']在你的setup.py被忽略,因为setuptools找不到顶级pylib.py. 但packages=setuptools.find_packages()可以工作并将pysoft其包含到发行版中。
| 归档时间: |
|
| 查看次数: |
4587 次 |
| 最近记录: |