Programing

코드 내에 파이썬 모듈 설치

lottogame 2020. 4. 11. 09:41
반응형

코드 내에 파이썬 모듈 설치


스크립트 내에서 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

반응형