我在Python中编写了一些库,用于我的项目。我已将它们本地存储在我的系统上,也远程存储在Github上。现在,每次我编写一些代码时,我都会在开头使用sys.path.append()
来帮助从我系统中的目录导入我的库。我想知道如果有任何方法直接从我的Github存储库导入这些文件
我的回购链接就是这个 - Quacpy
答案 0 :(得分:3)
如果你想使用必须安装的repo,我不确定你想如何在另一个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,解压缩然后导入文件。
答案 1 :(得分:3)
假设您有一个有效的setup.py文件,pip
支持基于git的安装。有关详细信息,请参阅https://pip.pypa.io/en/latest/reference/pip_install.html#git
Spoiler:因为你没有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
答案 2 :(得分:2)
这将整个存储库作为模块导入,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
答案 3 :(得分:1)
这感觉有点偏离墙,但可能适合你(如果你的任何库相互依赖,你也必须将这些导入改为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')
答案 4 :(得分:0)
我在 Colab 中使用的一种解决方法是将文件复制到 Colab 的文件夹,然后将其导入 Python 的解释器中。对于您的图书馆,这将是:
!wget -q https://github.com/biryani/Quacpy/__init__.py -O __init__.py > txt.log
from __init__ import *
应该有办法下载整个 repo,必要时解压,然后导入。