Закрытый пакет создан и установлен pip, но не может импортироваться с python - PullRequest
0 голосов
/ 20 марта 2020

Я создал личный пакет в TestPyPI

Пакет успешно установлен в пипсах:

(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'

I Вы читали о проблемах с python путями, но, похоже, это не проблема, поскольку последний из перечисленных путей - это путь, указанный в «Требовании уже выполнено» выше:

(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

Почему я не могу импортировать пакет? Любая помощь очень ценится.

1 Ответ

1 голос
/ 20 марта 2020

Ваш 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) создать новый каталог charter_common_utils в верхней части исходного каталога (где находится setup.py);

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(),
...