2012-01-30 137 views
42

腳本:
我用Python編寫的腳本,偶爾發出的鳴叫嘰嘰喳喳
它僅使用一個庫調用:tweepy
安裝後庫它的工作原理很棒。(Python)的本地使用的,而不是安裝庫它

問題:
我想舉辦一個服務器上的腳本,我沒有安裝任何東西
特權這將是巨大的,如果我可以只包括在本地從我得到了它的文件夾在
至於現在,我需要在我的文件的頂部,包括是:

import tweepy 

tweepy folder(確實有一個__init__.py文件,我認爲是非常重要的

。 10

問題:
如何在不安裝的情況下使用該庫?
基本上我想替換:import tweepyimport local_folder/tweepy/*

這可能只是python的常識,但我卡住了!

+1

我認爲,所有你需要的是tweepy文件夾是在'sys.path'可見,然後你用'進口tweepy'如常。 '__init __。py'文件的存在將使目錄顯示爲一個模塊,並且該文件內的代碼將在導入時運行(一次)。 – wim 2012-01-30 05:27:19

回答

53

編輯:此答案已過時。你應該使用VirtualEnv。如果你出於某種原因對第三方軟件過敏(在這種情況下,你爲什麼要安裝庫?),有一種叫做venv的東西,它實際上被構建到python3中,所以沒有理由不使用某種虛擬化。 (然而,大多數活躍在社區中的人更喜歡VirtualEnv,請參閱https://stackoverflow.com/a/41573588/410889。)

VirtualEnv安裝本地python解釋器,包含本地packages文件夾和所有內容。除了完全解決管理權限問題之外,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 
+1

如果您想強制使用本地庫而不是默認庫,該怎麼辦?基於模塊搜索路徑,如果模塊已經安裝在系統上,python將不會查找本地模塊。 https://docs.python.org/2/tutorial/modules.html – 2015-02-27 21:33:59

+1

@JeffTsui嗯,默認情況下,sys.path中的第一項是當前目錄,所以通過從模塊的同一目錄運行,我會永遠加載。你也可以對sys.path進行任意的修改;這只是一個列表。不過,從鏈接的文字來看,我不認爲有任何方法可以使用與內置模塊同名的本地庫。 – HardlyKnowEm 2015-02-27 22:00:23

+1

@JeffTsui另外,在發佈這個答案後的幾年經驗中,我會說你對任何與路徑相關的問題的答案是,你應該使用virtualenv,作爲下面建議的其他答案之一。 VirtualEnv現在基本上是管理你的Python環境的One True Way™。 – HardlyKnowEm 2015-02-27 22:03:00

8

你應該安裝一個virtual python environment,所以你不必擔心擁有管理員權限,你可以安裝任何你想要的。

+1

這在任何時候都不是所有版本的選項。考慮是否有人將他們的庫部署到不同的平臺上;你會強制他們也安裝了嗎? – Makoto 2012-01-30 05:37:31

+0

+1不是一個完整的解決方案,但是對於大多數用例來說,它是一個很好的解決方案。 – 2012-01-30 05:43:21

5

另外,如果你想用它經常像腳本。 在bashrc/zshrc文件中導出「PYTHONPATH」的簡單方法,並提供包含代碼的目錄的路徑。

例如:

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

這樣你就不需要你重新啓動的sys.path每次。

編碼快樂