Импорт библиотек python из Github

Я написал несколько библиотек на Python для использования в моем проекте. Я сохранил их локально в своей системе, а также удаленно на Github. Теперь каждый раз, когда я пишу какой-то код я использую sys.path.append() в начале, чтобы помочь импортировать библиотеки из каталога в моей системе. Мне было интересно, что если есть в любом случае импортировать эти файлы непосредственно из моего репозитория Github

ссылка на мое РЕПО-это - Quacpy

4 ответов


это чувствует себя немного от стены, но может работать для вас (если какая-либо из ваших библиотек зависит друг от друга, вам придется изменить эти импорт в githubimports тоже!?):

import requests
def githubimport(user, repo, module):
   d = {}
   url = 'https://raw.githubusercontent.com/{}/{}/master/{}.py'.format(user, repo, module)
   r = requests.get(url).text
   exec(r, d)
   return d

qoperator = githubimport('biryani', 'Quacpy', 'qoperator')

Если вы хотите использовать РЕПО, которое должно быть установлено, я не уверен, как вы хотите автоматизировать установку внутри другого скрипта python (также, что делать, если установка не выполняется).

однако, если вы просто хотите использовать некоторые методы из другого файла, вы можете скачать этот файл и затем импортировать его:

import urllib2

def download(url):
    filename = url.split('/')[-1]
    print 'Downloading', filename
    f = urllib2.urlopen(url)
    data = f.read()
    f.close()
    with open(filename, 'w') as myfile:
        myfile.write(data)

# get repository
download('https://raw.githubusercontent.com/biryani/Quacpy/master/auxfun.py')

# try to import something from it
from auxfun import qregnorm
q = qregnorm([0, 1, 2])
print 'Success! q =', q

возможно, вы даже можете загрузить весь zip, распаковать его, а затем импортировать файлы.


предполагая, что у вас есть действительный setup.py файл,pip поддерживает установку на основе git. См.https://pip.pypa.io/en/latest/reference/pip_install.html#git для деталей

спойлер: потому что у вас нет setup.py файл, вы увидите следующую ошибку, если вы попытаетесь использовать pip в настоящее время:

pip install -e git+https://github.com/biryani/Quacpy.git#egg=quacpy
Obtaining quacpy from git+https://github.com/biryani/Quacpy.git#egg=quacpy
  Cloning https://github.com/biryani/Quacpy.git to /.../quacpy
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 18, in <module>
    IOError: [Errno 2] No such file or directory: '/.../quacpy/setup.py'

    ----------------------------------------
    Command "python setup.py egg_info" failed with error code 1 in /.../quacpy

это импортирует весь репозиторий в виде модуля, Python 3:

import sys
import urllib.request # python 3
import zipfile
import os

REPOSITORY_ZIP_URL = 'https://github.com/biryani/Quacpy/archive/master.zip'

filename, headers = urllib.request.urlretrieve(REPOSITORY_ZIP_URL)

zip = zipfile.ZipFile(filename)

directory = filename + '_dir'

zip.extractall(directory)

module_directory_from_zip = os.listdir(directory)[0]
module_directory = 'Quacpy'
os.rename(os.path.join(directory, module_directory_from_zip),
          os.path.join(directory, module_directory))

sys.path.append(directory)

import Quacpy