簡體   English   中英

如何正確設置Python導入,所以不必手動下載它們?

[英]How Do I Set Up Python Imports Correctly and so I Don't have to manually download them?

我很難找到一個網站,該網站清楚地說明了如何正確導入python模塊。 我在名為~/Desktop/programming_feb_23_v的目錄中有一個名為coffee_shop.py的文件。

當我嘗試運行它時,我將從googlemaps包中收到python導入錯誤。 我直接下載了軟件包“ googlemaps-2.1.1.tar.gz”-解壓縮並將googlemaps目錄直接放置在scrape_google.py程序所在的目錄(以及作為子目錄的所有其他目錄)中谷歌地圖-2.1.1)。

在此處輸入圖片說明

當我嘗試重新運行python時,出現“ requests”模塊未找到錯誤。 然后,我嘗試下載請求模塊,並將其與googlemaps的__init__.py放在同一文件夾中。 似乎仍然認為我沒有請求文件,即使我有該目錄並且其中包含__init__.py文件,在嘗試運行該文件時仍然有問題。

在此處輸入圖片說明

有更聰明的方法嗎? 我在閱讀有關Python路徑的信息,但仍不完全清楚這意味着什么。 作為參考,我已經打印了sys.path 我想知道是否有一種方法可以將所有python軟件包放在一個位置(一個lib?),而不必每次我要運行它們時都手動下載它們。

在此處輸入圖片說明

可行的問題:-如何設置導入,這樣我可以(1)運行此程序,並且(2)不必每次都手動下載它們?

其他說明=我正在運行python 2.7

編輯-嘗試安裝虛擬環境,盡管它說已安裝,但仍無法運行該程序。

在此處輸入圖片說明

編輯v2-

在此處輸入圖片說明

在此處輸入圖片說明

編輯v3:仍無法使GoogleMaps項目正常工作

在此處輸入圖片說明

EDIT v4:按照http://docs.python-guide.org/en/latest/dev/virtualenvs/中的說明從venv重新開始

在此處輸入圖片說明

我建議您一定要獲得virtualenv並在每個項目中使用它。 在ubuntu上,您可以輕松加載

sudo apt-get install python-virtualenv

不幸的是,這將為您提供一個過時的版本。 為了解決這個問題,您只需對其進行升級。

sudo pip install --update virtualenv pip setuptools

完成后,為您自己創建一個用於虛擬環境的文件夾。 我喜歡將我的代碼保存在~/Python ,這使我可以使用workon別名來激活虛擬環境。

因此,讓我們沿着上述步驟繼續進行下一步。

$ mkdir ~/Python

這為您創建了一個存儲所有虛擬環境的地方。 然后這些是您每次啟動新項目時將運行的命令

$ cd ~/Python
$ mkdir projectname
$ cd projectname
$ virtualenv .projectname

我喜歡將我的virtualenvs放在一個隱藏的文件夾中,因為我很少直接與它們互動。 現在您有了一個virtualenv,需要激活它才能使用它。 您每次使用virtualenv時都需要激活它。 (注意提示一旦激活后如何更改)

$ . .projectname/bin/activate
(.projectname) $ |

注意上面命令的語法有點奇怪。 的。 告訴bash讀取以下腳本,就像在命令提示符下鍵入該腳本一樣,如果您希望虛擬環境能夠正常工作,那么這非常重要。

現在,當您需要可導入的python包時,只需執行

(.projectname) $ pip install packagename

在您的代碼中,您可以執行

import packagename

沒有任何問題。 如果您需要workon別名的副本,請告訴我,我將在此處發布。

我認為您正在嘗試導入錯誤的內容。 這是我導入googlemaps時得到的。 特別注意googlemaps的情況

$ .foo/bin/activate
$ . .foo/bin/activate
(.foo)/tmp$ pip install googlemaps
Collecting googlemaps
    Downloading googlemaps-2.1.1-py2-none-any.whl
Collecting requests (from googlemaps)
    Downloading requests-2.5.2-py2.py3-none-any.whl (474kB)
        100% |################################| 475kB 422kB/s 
Installing collected packages: requests, googlemaps


Successfully installed googlemaps-2.1.1 requests-2.5.2
(.foo)/tmp$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import googlemaps
>>> 

聽起來您的全局site-packages文件夾不在路徑中。 此答案可以幫助您查看site-packages位置,並可以在終端提示符下鍵入echo $PATH來查看echo $PATH中的內容。 如果它們不在您的路徑中,則可以通過搜索$PATH變量以及如何在用戶主目錄中的.bashrc.bash_profile.profile文件中進行設置/更新來解決此問題。

更好的方法是使用諸如virtualenv以便您可以基於每個項目管理Python依賴關系,而不是與全局依賴關系不匹配(例如說需要一個項目的requests版本和另一個項目的requests版本)進行斗爭。一個單獨的項目...如果您嘗試管理全局程序包,可能會很麻煩。

安裝virtualenv之后快速入門(不是唯一的方法):

  1. 從項目的目錄中鍵入virtualenv env
  2. . env/bin/activate . env/bin/activate 這將使您從全局python切換到env/安裝的python
  3. pip install依賴
  4. 完成或要切換到另一個項目后,只需鍵入deactivate
  5. 當您回到該項目上時,請確保您重復第2項

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM