코드 내에 파이썬 모듈 설치
스크립트 내에서 PyPi의 패키지를 직접 설치해야합니다. 어쩌면 일부 모듈 또는 거기에 distutils
( distribute
, pip
나처럼 뭔가를 실행할 수 등) 기능 pypi.install('requests')
및 요청 내 VIRTUALENV에 설치됩니다.
다음과 같은 것을 사용할 수도 있습니다.
import pip
def install(package):
if hasattr(pip, 'main'):
pip.main(['install', package])
else:
pip._internal.main(['install', package])
# Example
if __name__ == '__main__':
install('argh')
Rickard의 솔루션은 pip 개발 팀에서 지원하지 않으며 경우에 따라 충돌합니다 (예 : 멀티 스레드). 또한 pip 10 이후 pip._internal
로이 코드가 지원되지 않음을 확인하기 위해 코드가 이동되었으므로이 솔루션은 "pip> = 10.0.0"의 가져 오기 오류와 함께 실패합니다.
Quantum의 솔루션은 문제를 해결하기 위해 선호되는 방법이지만 그의 구현이 올바른 핍을 호출한다고 보장하지는 않습니다.
이 솔루션은 코드를 실행하는 파이썬 인터프리터의 pip를 호출합니다.
import subprocess
import sys
def install(package):
subprocess.call([sys.executable, "-m", "pip", "install", package])
Quantum의 솔루션과 동일하지만 pip를 직접 실행하는 대신 코드를 실행하는 동일한 python 실행 파일을 실행하고 설치된 pip 모듈을 실행하도록 지시하고 나머지 인수는 전달합니다.
사용하고자하는 경우 pip
필요한 패키지를 설치하고 설치 후 그것을 가져,이 코드를 사용할 수 있습니다 :
def install_and_import(package):
import importlib
try:
importlib.import_module(package)
except ImportError:
import pip
pip.main(['install', package])
finally:
globals()[package] = importlib.import_module(package)
install_and_import('transliterate')
패키지를 사용자로 설치 한 경우 패키지를 가져올 수없는 문제가 발생할 수 있습니다. sys.path를 새로 고치는 방법을 참조하십시오 . 추가 정보가 필요합니다.
이것은 작동해야합니다 :
import subprocess
def install(name):
subprocess.call(['pip', 'install', name])
"install_requires"옵션을 사용하여 자신의 패키지의 setup.py 내에 종속 모듈을 정의하십시오.
패키지에 콘솔 스크립트를 생성해야하는 경우 "console"스크립트 (예 : virtualenv 환경)에 배치 될 래퍼 스크립트를 생성하기 위해 "console_scripts"진입 점을 사용할 수 있습니다.
이 질문이 여전히 유효하기를 바랍니다. 나는 위와 같은 것을했다 :
import sys
import os
import site
try:
import pip
except ImportError:
print "installing pip"
cmd = "sudo easy_install pip"
os.system(cmd)
reload(site)
try:
import requests
except ImportError:
print "no lib requests"
import pip
cmd = "sudo pip install requests"
print "Requests package is missing\nPlease enter root password to install required package"
os.system(cmd)
reload(site)
두 번째 try 블록은 첫 번째 try 블록의 else 부분에도 쓸 수 있지만 문제 설명에서는 두 개의 별도 블록을 작성해야합니다.
이것이 내 프로젝트에 대한 모든 패키지를 설치 하는 방법 입니다.
그냥 목록에 모든 이름을 추가하고 실행하는 주요 코드를 실행하기 전에 하나.
이것을 "venv"의 사용과 결합하는 것이 좋습니다!
"""call this module to setup your python packages via pip"""
from pip._internal import main as pip
pip_install_argument = "install"
# packages to install
packages_to_install = [
"numpy", # math magic 1
"scipy", # math magic 2
]
def install(packages):
"""installes given packages via pip
Args:
package names as list
Returns:
None
"""
global pip_install_argument
for package in packages:
pip([pip_install_argument, package])
if __name__ == '__main__':
install(packages_to_install)
나는 그것을 사용하여 더 간단 할 수 있다고 생각합니다. os.system
from os import system
package = # the name of the package
system('pip install %s' % package)
모든 요구 사항이 내부에 정의되어 있다고 가정하면이 작업 (python 2.x)이 작동합니다 requirements.txt
.
def pip_auto_install():
"""
Automatically installs all requirements if pip is installed.
"""
try:
from pip._internal import main as pip_main
pip_main(['install', '-r', 'requirements.txt'])
except ImportError:
print("Failed to import pip. Please ensure that pip is installed.")
print("For further instructions see "
"https://pip.pypa.io/en/stable/installing/")
sys.exit(-1)
except Exception as err:
print("Failed to install pip requirements: " + err.message)
sys.exit(-1)
pip_auto_install()
@Aaron의 답변에 예외 처리를 추가했습니다.
import subprocess
import sys
try:
import pandas as pd
except ImportError:
subprocess.call([sys.executable, "-m", "pip", "install", 'pandas'])
finally:
import pandas as pd
sys 모듈을 사용하여 잘 설치할 수 있습니다
import sys
!{sys.executable} -m pip install <package> --user
나는를 사용 os.system
후, 당신은 다른 모든 스크립트에서 모듈을 사용할 수 있기 때문에 모듈을 수입하는 OS 터미널을 에뮬레이션 할 수 있습니다.
예를 들어, 함께 추가 된 별도의 스크립트에서 실행되는 게임 엔진을 만들고 있는데, 대부분의 스크립트는 Pygame을 사용하며 사용자에게 파이 게임이없는 경우 시작 파일은 다음 코드를 사용하여 추가합니다.
import os
os.system('pip install pygame')
불행히도, 사용자 컴퓨터에 pip를 얻는 방법에 대해서는 전혀 모르므로 pip를 가진 사용자에 따라 다릅니다.
나는 우리가 우리 기계에 핍을 가지고 있다고 가정하고, 누락 된 특정 의존성을 잡으려고 노력할 것입니다.이 방법을 시도하고 당신이 생각하는 것을 알려주십시오.
import os
try:
import something
.....
.....
except ImportError as e:
pip = lambda : os.system('pip install' + str(e)[15:])
pip()
또한 "자체 인식"임포터 메커니즘을 적용 pip
하는 lambda
기능을 사용 하는 경우 모듈 자체에 대한 작업을 고려하십시오 . 이 코드 스 니펫을 따르면 :)
try:
import somthing
..........
..........
except ImportError as e:
# importing pip module to handle pip functionalites
import pip
# create a lambda that import using pip by module_error_name=e[15:]
installer = lambda : pip.main(['install', str(e)[15:])
# create a lambda that import a module by linear_lambda_call
importer = lambda x : __import__(str(x)).import_module()
# install the module
installer()
# import the module
importer()
가져 오기 가능한 pip-module이 항상 작동하는 것은 아니기 때문에보다 강력한 방법이 있습니다.
def PackageInstall(error):
'''
Finds out which package is missing and downloads it automatically after five seconds.
Use example:
try:
import numpy as np
import matplotlib.pyplot as plot
except ImportError as error:
PackageInstall(error)
'''
import time, subprocess, os, sys
lib = str(error)[15:].replace('\'', '')
print('>>>',str(error))
print('>>> Download will start after five seconds')
time.sleep(5)
subprocess.call("pip install " + lib)
print('>>> Restarting')
os.startfile(__file__)
sys.exit()
이것은 Windows에서 작동합니다.
1 일
> Download
> https://github.com/GeoNode/geonode-win-installer/blob/master/python_deps/pip-9.0.1-py2.py3-none-any.whl
2 위
extract .whl file and; use winRar
copy extracted file and paste sitepackage [or python module container]
files are.. pip and pip-19.0.3.dist-info
3 위
import pip
pip.main(['install','scpy'])
scpy or any package you want to install
당신은 항상 다운로드 할 수 있습니다
import os
그런 다음 모든 터미널 명령을 다운로드하십시오.
처럼
while True:
code = input("")
os.system("code")
확실하지 않지만 터미널에서 어떻게 해야할지조차 모르는 경우 파이썬에서 어떻게 할 것입니까?
참고 URL : https://stackoverflow.com/questions/12332975/installing-python-module-within-code
'Programing' 카테고리의 다른 글
문자가 문자열에 있는지 테스트 (0) | 2020.04.11 |
---|---|
jQuery에서 확인란 값을 검색하는 방법 (0) | 2020.04.11 |
IntelliJ는 수입을 조직합니다 (0) | 2020.04.11 |
C ++ 애플리케이션에 리플렉션을 추가하려면 어떻게해야합니까? (0) | 2020.04.11 |
중심에 초점을 맞춘 난수 얻기 (0) | 2020.04.11 |