从Github导入python库

时间:2015-07-16 06:16:17

标签: python github sys

我在Python中编写了一些库,用于我的项目。我已将它们本地存储在我的系统上,也远程存储在Github上。现在,每次我编写一些代码时,我都会在开头使用sys.path.append()来帮助从我系统中的目录导入我的库。我想知道如果有任何方法直接从我的Github存储库导入这些文件

我的回购链接就是这个 - Quacpy

5 个答案:

答案 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,必要时解压,然后导入。