在本地使用库,而不是安装它

我用 python 编写了一个脚本,它偶尔会向 Twitter 发送 tweet
它只使用一个名为 镊子的库。

问题:
我想主机上的服务器上,我没有权限安装任何东西的脚本
It would be great if I can just include it locally from the folder I've got it in.
从现在开始,我需要在我的文件顶部包括的是:

import tweepy

镊子文件夹(确实有一个 __init__.py文件,我相信是重要的。

问题:
如果不安装该库,我如何使用它?
基本上我想用 import local_folder/tweepy/*代替: import tweepy

110295 次浏览

你应该安装一个 虚拟 Python 环境虚拟 Python 环境,这样你就永远不用担心有管理员权限,你可以安装任何你想要的。

编辑: 这个答案已经过时了。您应该使用 虚拟环境。如果出于某种原因对第三方软件过敏(在这种情况下,为什么要安装库?),有一个叫做 来吧的东西,它实际上是构建在 python3中的,所以没有理由不使用某种虚拟化。(然而,社区中活跃的大多数人更喜欢 VirtualEnv。见 https://stackoverflow.com/a/41573588/410889)

VirtualEnv 安装一个本地 python 解释器,包含一个本地包文件夹和所有东西。除了完全解决管理特权的问题之外,VirtualEnv 最重要的特性是允许将环境分开。如果您有一个项目需要 Foo 2.3版本,另一个项目需要 Foo 1.5版本,那么您不能让它们共享相同的环境; 您必须将它们的环境与 VirtualEnv 分开。


有几种可能性:

如果您已经知道如何安装 Python 模块,那么默认的 distutils设置已经包含按用户安装选项。只要运行 python setup.py install --user而不是 python setup.py install。这是最简单的,因为这不需要添加任何源代码。

你也可以使用目录为 tweepy的当前工作目录来运行脚本。

你可以添加一个名为 PYTHONPATH 的环境变量到你用来运行脚本的任何环境(例如 shell)中,并使其包含到 tweepy的路径。

如果所有其他方法都失败了,并且您确实希望编辑源代码,那么您将需要编辑 sys.pathsys.path是 Python 查找代码的位置列表。

在你的代码中,写:

import sys
sys.path.append("/path/to/your/tweepy/directory")


import tweepy

如果你想像脚本一样经常使用它。 在 bashrc/zhrc 文件中导出“ PYTHONPATH”并为包含代码的目录提供路径的简单方法。

例如:

export PYTHONPATH=$PYTHONPATH:$HOME/path/to/module

这样,每次重新启动时就不需要执行 sys.path。

编码愉快

简单明了的解决方案:

import sys
sys.path.insert(0, '/absolute/path/to/package')
import some.cool.package


some.cool.package.doCoolStuff()

使用“ append”的其他答案不适用于已安装的软件包

选择1: venv

只要用 venv创建一个虚拟环境并将其安装在:

$ python -m venv venv
$ source venv/bin/activate


# Form here on, pip is the pip from venv!
$ pip --version
pip 20.3 from /home/math/venv/lib/python3.8/site-packages/pip (python 3.8)
$ pip install tweepy

选项2: ——用户

使用 --user在用户目录中安装包

$ pip install tweepy --user