私有包已创建并安装了 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'],

安装后您可以导入 anomalyparquet_converter 但不能导入 charter_common_utils;后者没有被提及。要导入 charter_common_utils,您必须:

1) 在源目录的顶部(setup.py 所在的位置)创建一个新目录 charter_common_utils

2) 创建一个新的空文件charter_common_utils/__init__.py;

3) 移动所有顶级目录(anomalybatch_transformhive_table_checkermetadata_ioparquet_converterpyspark_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(),