установка пакета, отличного от PyPi, в виртуальную среду

Я новичок в Python, поэтому, пожалуйста, будьте терпеливы со мной. Я без проблем устанавливаю все обычные пакеты через pip в виртуальную среду. Но есть и внешние пакеты, которые я беру с github, и моя собственная библиотека пакетов lib. Я хочу добавить их в свой проект и сохранить версии, чтобы знать, когда обновлять. Все, что я вижу, когда исследую, это код вроде

current_path = os.path.dirname(os.path.abspath(__file__)) 
sys.path.append(current_path) 

Это добавляет каталог пакета к пути. Есть также примеры операторов импорта с относительными путями.

Разве эти не-pip-пакеты не должны быть установлены прямо в виртуальную среду с правильным управлением версиями? Как мне этого добиться?


person Barka    schedule 24.02.2018    source источник
comment
Что вы имеете в виду, говоря о пакетах без пипсов? Пакеты Python, которые не опубликованы в PyPI? Или библиотеки не на Python?   -  person phd    schedule 24.02.2018
comment
Пакеты на PyPi. Я отредактировал вопрос для ясности.   -  person Barka    schedule 24.02.2018


Ответы (1)


Вы можете легко это сделать, поскольку pip поддерживает установку из системы контроля версий, см. здесь.

Это предполагает, что пакет, который вы хотите установить, имеет файл setup.py.

pip install git+git://github.com/BillMills/python-package-example.git

Гит

(в основном форма извлечения здесь)

Pip поддерживает клонирование git, git+http, git+https, git+ssh, git+git и git+file.

[-e] git://git.myproject.org/MyProject#egg=MyProject
[-e] git+http://git.myproject.org/MyProject#egg=MyProject
[-e] git+https://git.myproject.org/MyProject#egg=MyProject
[-e] git+ssh://git.myproject.org/MyProject#egg=MyProject
[-e] git+git://git.myproject.org/MyProject#egg=MyProject
[-e] git+file://git.myproject.org/MyProject#egg=MyProject
-e [email protected]:MyProject#egg=MyProject

Вы также можете попросить установить из определенной ветки, хэш фиксации или имя тега, если вам нужна бета-версия или ветка, предназначенная для вашего конкретного дистрибутива и т. д., используя @ и передав имя ветки/хеш фиксации/тег. имя:

Ответвляться:

[-e] git://git.myproject.org/MyProject.git@master#egg=MyProject

Фиксация имеет:

[-e] git://git.myproject.org/MyProject.git@da39a3ee5e6b4b0d3255bfef95601890afd80709#egg=MyProject

Ярлык:

git://git.myproject.org/[email protected]#egg=MyProject

Вот реальный пример использования (Git):

Допустим, мы хотим установить следующий пакет Python, доступный на GitHub здесь.

Просто я побегу:

pip install git+git://github.com/BillMills/python-package-example.git

И вот результат:

(test) pc-207-126:Desktop rafael$ pip install git+git://github.com/BillMills/python-package-example.git
Collecting git+git://github.com/BillMills/python-package-example.git
  Cloning git://github.com/BillMills/python-package-example.git to /private/var/folders/c_/8qcnm5sj3kg7_f887qv473tm0000gn/T/pip-mx1vcsod-build
Collecting numpy (from python-package-example==0.1)
  Downloading numpy-1.14.1-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (4.7MB)
    100% |████████████████████████████████| 4.7MB 305kB/s
Installing collected packages: numpy, python-package-example
  Running setup.py install for python-package-example ... done
Successfully installed numpy-1.14.1 python-package-example-0.1

Если я сейчас запущу pip freeze, чтобы проверить, был ли установлен пакет:

(test) pc-207-126:Desktop rafael$ pip freeze
numpy==1.14.1
python-package-example==0.1

Как видите, установка прошла успешно, а также были установлены некоторые зависимости Python-Package-Example (т.е. numpy).

Примечание. github.com/BillMills/python-package-example.git использует синтаксис Python 2. Пример, содержащий синтаксис Python 3, см. на странице https://github.com/kennethreitz/samplemod. Разница заключается в синтаксисе импорта в init: в Python 2 используется «import somePython», а в Python 3 — «from . импортировать какой-нибудь Python'

person Rafael    schedule 24.02.2018