Jin*_*Jia 5 python linux pip python-import python-wheel
我创建了自己的 python 包jjnsegutils,并将其上传到 Pypi 网站。但是我成功安装后pip install jjnsegutils,仍然无法导入。错误显示:ModuleNotFoundError: No module named 'jjnsegutils'。
整个过程的详细信息如下。
\n我的包的结构是:
\njjnsequtils\n\xe2\x94\x9c\xe2\x94\x80 __init__.py\n\xe2\x94\x9c\xe2\x94\x80 myutil\n \xe2\x94\x9c\xe2\x94\x80 __init__.py\n \xe2\x94\x9c\xe2\x94\x80 myutil.py\n\xe2\x94\x9c\xe2\x94\x80 LICENSE\n\xe2\x94\x9c\xe2\x94\x80 README.md\n\xe2\x94\x9c\xe2\x94\x80 setup.py\n\nRun Code Online (Sandbox Code Playgroud)\n两个__init__.py文件都是空的。
在我的setup.py:
import setuptools\n\nwith open("README.md", "r") as fh:\n long_description = fh.read()\n\nsetuptools.setup(\n name="jjnsegutils", # Replace with your own username\n version="0.0.10",\n author="Jingnan",\n author_email="jiajingnan2222@gmail.com",\n description="A package of common utilities for Medical images segmentation and evaluation.",\n long_description=long_description,\n long_description_content_type="text/markdown",\n url="https://github.com/Ordgod/jjnsegutils",\n packages=setuptools.find_packages(),\n classifiers=[\n "Programming Language :: Python :: 3",\n "License :: OSI Approved :: MIT License",\n "Operating System :: OS Independent",\n ],\n python_requires='>=3.6',\n)\nRun Code Online (Sandbox Code Playgroud)\n我使用命令python setup.py sdist bdist_wheel生成分发文件。\n logging information:
running sdist\nrunning egg_info\nwriting jjnsegutils.egg-info/PKG-INFO\nwriting dependency_links to jjnsegutils.egg-info/dependency_links.txt\nwriting top-level names to jjnsegutils.egg-info/top_level.txt\nreading manifest file 'jjnsegutils.egg-info/SOURCES.txt'\nwriting manifest file 'jjnsegutils.egg-info/SOURCES.txt'\nrunning check\ncreating jjnsegutils-0.0.10\ncreating jjnsegutils-0.0.10/jjnsegutils.egg-info\ncreating jjnsegutils-0.0.10/myutil\ncopying files to jjnsegutils-0.0.10...\ncopying README.md -> jjnsegutils-0.0.10\ncopying setup.py -> jjnsegutils-0.0.10\ncopying jjnsegutils.egg-info/PKG-INFO -> jjnsegutils-0.0.10/jjnsegutils.egg-info\ncopying jjnsegutils.egg-info/SOURCES.txt -> jjnsegutils-0.0.10/jjnsegutils.egg-info\ncopying jjnsegutils.egg-info/dependency_links.txt -> jjnsegutils-0.0.10/jjnsegutils.egg-info\ncopying jjnsegutils.egg-info/top_level.txt -> jjnsegutils-0.0.10/jjnsegutils.egg-info\ncopying myutil/__init__.py -> jjnsegutils-0.0.10/myutil\ncopying myutil/myutil.py -> jjnsegutils-0.0.10/myutil\nWriting jjnsegutils-0.0.10/setup.cfg\nCreating tar archive\nremoving 'jjnsegutils-0.0.10' (and everything under it)\nrunning bdist_wheel\nrunning build\nrunning build_py\ninstalling to build/bdist.linux-x86_64/wheel\nrunning install\nrunning install_lib\ncreating build/bdist.linux-x86_64/wheel\ncopying build/lib/myutil.py -> build/bdist.linux-x86_64/wheel\ncreating build/bdist.linux-x86_64/wheel/myutil\ncopying build/lib/myutil/__init__.py -> build/bdist.linux-x86_64/wheel/myutil\ncopying build/lib/myutil/myutil.py -> build/bdist.linux-x86_64/wheel/myutil\nrunning install_egg_info\nCopying jjnsegutils.egg-info to build/bdist.linux-x86_64/wheel/jjnsegutils-0.0.10-py3.7.egg-info\nrunning install_scripts\nadding license file "LICENSE" (matched pattern "LICEN[CS]E*")\ncreating build/bdist.linux-x86_64/wheel/jjnsegutils-0.0.10.dist-info/WHEEL\ncreating 'dist/jjnsegutils-0.0.10-py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it\nadding 'myutil.py'\nadding 'myutil/__init__.py'\nadding 'myutil/myutil.py'\nadding 'jjnsegutils-0.0.10.dist-info/LICENSE'\nadding 'jjnsegutils-0.0.10.dist-info/METADATA'\nadding 'jjnsegutils-0.0.10.dist-info/WHEEL'\nadding 'jjnsegutils-0.0.10.dist-info/top_level.txt'\nadding 'jjnsegutils-0.0.10.dist-info/RECORD'\nremoving build/bdist.linux-x86_64/wheel\n\nRun Code Online (Sandbox Code Playgroud)\n我使用命令twine upload dist/*将文件上传dist到 Pypi。
我使用命令pip install jjnsegutils将其安装到我自己的py37由 conda 创建的环境中。表明
Collecting jjnsegutils\n Downloading jjnsegutils-0.0.10-py3-none-any.whl (11 kB)\nInstalling collected packages: jjnsegutils\nSuccessfully installed jjnsegutils-0.0.10\nRun Code Online (Sandbox Code Playgroud)\n然后我$ python在终端中输入内容以进入 python 交互式终端。并输入:
>>> import jjnsegutils\nRun Code Online (Sandbox Code Playgroud)\n但它显示:
\nTraceback (most recent call last):\n File "<stdin>", line 1, in <module>\nModuleNotFoundError: No module named 'jjnsegutils'\n\nRun Code Online (Sandbox Code Playgroud)\n我通过命令检查了包$ pip show jjnsegutils,它显示:
Name: jjnsegutils\nVersion: 0.0.10\nSummary: A package of common utilities for Medical images segmentation and evaluation.\nHome-page: https://github.com/Ordgod/jjnsegutils\nAuthor: Jingnan\nAuthor-email: jiajingnan2222@gmail.com\nLicense: UNKNOWN\nLocation: /home/jjia/.conda/envs/py37/lib/python3.7/site-packages\nRequires:\nRequired-by:\n\nRun Code Online (Sandbox Code Playgroud)\n我进一步检查了它$ ls /home/jjia/.conda/envs/py37/lib/python3.7/site-packages,它显示:
... # other packages\njjnsegutils-0.0.10.dist-info \n... # other packages\nRun Code Online (Sandbox Code Playgroud)\n我认为应该有另一个目录jjnsegutils与jjnsegutils-0.0.10.dist-info. 但我没有看到。这是我无法导入自己的包的原因吗?
py37我确保虚拟环境在整个过程中始终命名相同。我用的是CentOS,python3.7。
期待任何讨论和建议。非常感谢!
\n小智 2
你应该import myutil。
\n\npackages 是应包含在分发包中的所有 Python 导入包的列表。我们可以使用 find_packages() 自动发现所有包和子包,而不是手动列出每个包。在这种情况下,包列表将为 example_pkg,因为 \xe2\x80\x99 是唯一存在的包。\n https://packaging.python.org/tutorials/packaging-projects/
\n
| 归档时间: |
|
| 查看次数: |
533 次 |
| 最近记录: |