Почему аргумент, используемый при установке pip, иногда отличается от аргумента, используемого при импорте? - PullRequest
0 голосов
/ 10 июля 2020

Для многих python библиотек аргумент, используемый с import, такой же, как аргумент, используемый для установки библиотеки с помощью pip.

Например,

pip install numpy
pip install scipy
pip install pandas

соответствует

import numpy
import scipy
import pandas

, но этот шаблон работает не для всех библиотек. Например (найдено здесь ):

pip install Pillow

требуется, чтобы добиться успеха

import PIL

Основываясь на шаблоне в первых примерах, я ожидал pip install PIL для установки PIL, но вместо этого мы используем pip install Pillow. Почему это и как это работает?

1 Ответ

1 голос
/ 10 июля 2020

Обычно вы импортируете имя модуля. Например, ваш пакет может быть разработан в следующей иерархии:

MyLib
- __init__.py
- my_script1.py
- my_script2.py

Однако, когда вы делаете свою библиотеку как «пакет», доступный в pip, обычно вам нужно будет подготовить свой setup.py файл, который будет автоматически запускаться, когда люди используют pip install для установки вашего пакета.

setup.py может быть примерно таким:

from distutils.core import setup
setup(
  name = 'YOURPACKAGENAME',         # How you named your package folder (MyLib)
  packages = ['YOURPACKAGENAME'],   # Chose the same as "name"
  version = '0.1',      # Start with a small number and increase it with every change you make
  license='MIT',        # Chose a license from here: https://help.github.com/articles/licensing-a-repository
  description = 'TYPE YOUR DESCRIPTION HERE',   # Give a short description about your library
  author = 'YOUR NAME',                   # Type in your name
  author_email = 'your.email@domain.com',      # Type in your E-Mail
  url = 'https://github.com/user/reponame',   # Provide either the link to your github or to your website
  download_url = 'https://github.com/user/reponame/archive/v_01.tar.gz',    # I explain this later on
  keywords = ['SOME', 'MEANINGFULL', 'KEYWORDS'],   # Keywords that define your package best
  install_requires=[            # I get to this in a second
          'validators',
          'beautifulsoup4',
      ],
  classifiers=[
    'Development Status :: 3 - Alpha',      # Chose either "3 - Alpha", "4 - Beta" or "5 - Production/Stable" as the current state of your package
    'Intended Audience :: Developers',      # Define that your audience are developers
    'Topic :: Software Development :: Build Tools',
    'License :: OSI Approved :: MIT License',   # Again, pick a license
    'Programming Language :: Python :: 3',      #Specify which pyhton versions that you want to support
    'Programming Language :: Python :: 3.4',
    'Programming Language :: Python :: 3.5',
    'Programming Language :: Python :: 3.6',
  ],
)

Следовательно, в приведенном выше примере, люди, которые устанавливают ваш пакет через pip, должны запускать pip install YOURPACKAGENAME. После этого им нужно запустить в коде import MyLib.

TD; DL:

То, что вы импортируете, - это имя модуля, но то, что вы установили через pip, - это имя пакета, они могут быть разными. Но обычно я бы сказал, что мне нравится, когда люди используют одно и то же имя для обоих, чтобы избежать путаницы.

Ссылка: https://medium.com/@joel.barmettler / how-to-upload-your- python -package -to-pypi-65edc5fe9c56

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...