Мне нужно установить пакет из PyPi прямо в моем скрипте. Может быть, есть какой-то модуль или distutils
( distribute
и pip
т. Д.) Функция, которая позволяет мне просто выполнить что-то подобное, pypi.install('requests')
и запросы будут установлены в моем virtualenv.
python
pip
python-module
pypi
chuwy
источник
источник
pip
никогда не был хорошей идеей - тот факт, что все его содержимое_internal
начинается с версии 10 ...pip._internal
не предназначен для импорта, он может делать абсолютно случайные вещи при импорте в другую программу.Ответы:
Официально рекомендуемый способ установки пакетов из скрипта - вызов интерфейса командной строки pip через подпроцесс. Большинство других ответов, представленных здесь, не поддерживаются pip . Кроме того, начиная с pip v10, весь код был перемещен
pip._internal
точно, чтобы дать понять пользователям, что использование pip в программном обеспечении не разрешено.Используйте,
sys.executable
чтобы убедиться, что вы будете вызывать то же самое,pip
связанное с текущей средой выполнения.источник
Вы также можете использовать что-то вроде:
источник
pip.main()
как и в командной строке (но с каждым параметром в виде отдельной записи в списке вместо одной строки). И чтобы указать, какую версию пакета вы хотите, сделайте так же, как в командной строке .. например:pip.main(['install', 'pip==7.1.0'])
from pip._internal import main as pipmain
тогда вы можете использовать такpipmain()
же, как и устаревшие,pip.main()
см. stackoverflow.com/questions/43398961/…Если вы хотите использовать
pip
для установки требуемый пакет и импортировать его после установки, вы можете использовать этот код:Если вы установили пакет как пользователь, вы можете столкнуться с проблемой, которую вы не можете просто импортировать. Смотрите Как обновить sys.path? для дополнительной информации.
источник
imp.reload(site)
получает меняRuntimeError: dictionary changed size during iteration
pip uninstall <package_name>
. Я все еще могу удалить его, используя,pip.main
но просто хотел знать, где он устанавливает пакет?pip install requests[security]
:? Я не был уверен, правильно ли он определит глобалы.pip.main
больше не работает. pip.pypa.io/en/latest/user_guide/#using-pip-from-your-programЭто должно работать:
источник
[sys.executable, '-m', 'pip', 'install', name]
гарантирует, что вы получите «правильный» пункт здесь.я добавил некоторую обработку исключений в ответ @ Aaron.
источник
subprocess.call
поэтому код может завершиться ошибкой.Вы определяете зависимый модуль внутри setup.py вашего собственного пакета с опцией «install_requires».
Если вашему пакету нужно сгенерировать какой-либо консольный скрипт, вы можете использовать точку входа «console_scripts», чтобы сгенерировать скрипт-обертку, который будет помещен в папку «bin» (например, вашей среды virtualenv).
источник