私有包已创建并安装了 pip,但无法使用 python 导入
Private package was created and pip installed but cannot import with python
我在 TestPyPI 中创建了一个私有包
包已成功 pip 安装:
(base) my_user:Desktop$ python3 -m pip install --index-url https://test.pypi.org/simple/ --no-deps charter-common-utils==0.0.1
Looking in indexes: https://test.pypi.org/simple/
Requirement already satisfied: charter-common-utils==0.0.1 in /Users/my_id/opt/anaconda3/lib/python3.7/site-packages (0.0.1)
我在终端启动python:
>>> import charter_common_utils
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'charter_common_utils'
我读过 python 路径问题,但这似乎不是问题,因为列出的最后一条路径是上面 'Requirement already satisfied' 中提到的路径:
(base) SR-C02XT71WJG5J:Desktop p2929612$ python3
Python 3.7.6 (default, Jan 8 2020, 13:42:34)
[Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/Users/my_id/opt/anaconda3/lib/python37.zip', '/Users/my_id/opt/anaconda3/lib/python3.7', '/Users/my_id/opt/anaconda3/lib/python3.7/lib-dynload', '/Users/my_id/.local/lib/python3.7/site-packages', '/Users/my_id/opt/anaconda3/lib/python3.7/site-packages']
当我关注/Users/my_id/opt/anaconda3/lib/python3.7/site-packages'
我可以看到文件 charter_common_utils-0.0.1.dist-info
为什么我无法导入包?非常感谢任何帮助。
您的setup.py
列出了很多顶级包:
packages=['anomaly', 'batch_transform', 'hive_table_checker', 'metadata_io',
'parquet_converter', 'pyspark_visualizer'],
安装后您可以导入 anomaly
或 parquet_converter
但不能导入 charter_common_utils
;后者没有被提及。要导入 charter_common_utils
,您必须:
1) 在源目录的顶部(setup.py
所在的位置)创建一个新目录 charter_common_utils
;
2) 创建一个新的空文件charter_common_utils/__init__.py
;
3) 移动所有顶级目录(anomaly
、batch_transform
、hive_table_checker
、metadata_io
、parquet_converter
、pyspark_visualizer
) 到 charter_common_utils
;
4) 改变你的 setup.py
:
packages=['charter_common_utils',
'charter_common_utils.anomaly',
'charter_common_utils.batch_transform',
'charter_common_utils.hive_table_checker',
'charter_common_utils.metadata_io',
'charter_common_utils.parquet_converter',
'charter_common_utils.pyspark_visualizer',
],
或者这样改变setup.py
:
from setuptools import find_packages()
…
packages=find_packages(),
我在 TestPyPI 中创建了一个私有包
包已成功 pip 安装:
(base) my_user:Desktop$ python3 -m pip install --index-url https://test.pypi.org/simple/ --no-deps charter-common-utils==0.0.1
Looking in indexes: https://test.pypi.org/simple/
Requirement already satisfied: charter-common-utils==0.0.1 in /Users/my_id/opt/anaconda3/lib/python3.7/site-packages (0.0.1)
我在终端启动python:
>>> import charter_common_utils
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'charter_common_utils'
我读过 python 路径问题,但这似乎不是问题,因为列出的最后一条路径是上面 'Requirement already satisfied' 中提到的路径:
(base) SR-C02XT71WJG5J:Desktop p2929612$ python3
Python 3.7.6 (default, Jan 8 2020, 13:42:34)
[Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/Users/my_id/opt/anaconda3/lib/python37.zip', '/Users/my_id/opt/anaconda3/lib/python3.7', '/Users/my_id/opt/anaconda3/lib/python3.7/lib-dynload', '/Users/my_id/.local/lib/python3.7/site-packages', '/Users/my_id/opt/anaconda3/lib/python3.7/site-packages']
当我关注/Users/my_id/opt/anaconda3/lib/python3.7/site-packages'
我可以看到文件 charter_common_utils-0.0.1.dist-info
为什么我无法导入包?非常感谢任何帮助。
您的setup.py
列出了很多顶级包:
packages=['anomaly', 'batch_transform', 'hive_table_checker', 'metadata_io',
'parquet_converter', 'pyspark_visualizer'],
安装后您可以导入 anomaly
或 parquet_converter
但不能导入 charter_common_utils
;后者没有被提及。要导入 charter_common_utils
,您必须:
1) 在源目录的顶部(setup.py
所在的位置)创建一个新目录 charter_common_utils
;
2) 创建一个新的空文件charter_common_utils/__init__.py
;
3) 移动所有顶级目录(anomaly
、batch_transform
、hive_table_checker
、metadata_io
、parquet_converter
、pyspark_visualizer
) 到 charter_common_utils
;
4) 改变你的 setup.py
:
packages=['charter_common_utils',
'charter_common_utils.anomaly',
'charter_common_utils.batch_transform',
'charter_common_utils.hive_table_checker',
'charter_common_utils.metadata_io',
'charter_common_utils.parquet_converter',
'charter_common_utils.pyspark_visualizer',
],
或者这样改变setup.py
:
from setuptools import find_packages()
…
packages=find_packages(),