Импорт библиотек 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