2013-04-23 79 views
1

我對python相當陌生,並且來自C#背景。在C#l中,第三方庫通常存儲在項目文件夾中。引用和導入第三方python庫

這意味着庫完全在項目內部。然後該項目不依賴於項目文件夾以外的任何東西(當然除了.net框架)。

我真的很喜歡這個結構,並試圖通過將庫複製到lib目錄中,在項目根目錄中並在應用程序啓動時將lib文件夾添加到python路徑來成功地鏡像python。

我擔心可能會有一些東西我可以忽略這樣做,因爲我查看了一下週圍有沒有真正看到任何人在thw python社區這樣做。

我的問題很簡單 - 這可以嗎?通過簡單地轉儲必要的.py庫,而不是使用簡單安裝,從而將系統級庫中的庫存儲在站點包中,我是否可能會錯過某些內容?

請隨時讓我知道你可以看到的任何缺點,不管它有多簡單。

謝謝!

+1

它應該沒問題......如果你正在分發它,請注意丟失了DLL。一個更好的系統是把它們留在原地,並使用pyinstaller或類似的東西來打包你的項目進行分發,這通常會依賴關係 – 2013-04-23 22:25:38

回答

1

我會支持使用virtualenvpip作爲開發目的。這會給你準確的沙箱,你已經習慣了。至於分發,請使用setup.py並重新使用requirements.txt文件,您可以使用該文件與pip install -r安裝依賴關係,以生成install_requires參數setuptools.setup。我一直有意設立一個例子來說明這一點 - 請檢查https://github.com/dave-shawley/setup-example,這裏有一些很好的例子。我計劃在時間允許的基礎上再增加一點。

+0

感謝您的回覆..我承認我沒有充分調查virtualenv。然而,舉例來說,我想將我的代碼簽出到以前沒有的計算機上......使用虛擬env並不意味着我必須在我的系統上安裝第三方庫(即使它是由virtualenv自動完成的)?理想情況下,我想僅僅檢出/克隆代碼,然後運行一段時間。這可能只是我缺乏的virtualenv知識在這裏....無論如何去讀現在 – 2013-04-24 12:41:55

+0

看看你的例子那裏。看起來它完成了我的想法 - 爲自動安裝在系統上的項目定義了依賴關係。它是否正確?這是我寧願避免......我希望所有東西都可以自包含在項目文件夾中。我目前的方法是否是這樣做的方式? – 2013-04-24 18:05:36

0

如果您想要密切管理每個項目的代碼依賴關係,則可能需要查看virtualenv

Virtualenv將允許您保持您的依賴關係接近您的來源,但會刪除容易出錯的手動複製.py文件。

除此之外,有些軟件包不是純python,它們有時包含已編譯的C代碼 - 如果使用virtualenv,則不必擔心。

+0

如果OP想要分發代碼,virtualenv可以用於這個目的嗎?我真的很好奇,因爲那樣會讓我更容易。有這樣的指導嗎? – SethMMorton 2013-04-23 23:56:03

+0

是的....有一個閱讀我的評論上面的d shawley。我可以將我的代碼克隆到一個新的Python安裝,並立即運行? – 2013-04-24 12:49:03