如何正确设置Python导入,所以我不必手动下载它们?

时间:2015-02-24 03:27:16

标签: python python-2.7 python-import

我很难找到一个清楚地解释如何导入python模块而没有错误的网站。我在名为coffee_shop.py的目录中有一个名为~/Desktop/programming_feb_23_v的文件。

当我尝试运行它时,我会从googlemaps包中获取python导入错误。我直接下载了软件包“googlemaps-2.1.1.tar.gz” - 我将其解压缩并将googlemaps目录直接放在与scrape_google.py程序相同的目录中(以及作为子项出现的所有其他目录) googlemaps-2.1.1的目录。

enter image description here

当我尝试重新运行python时,我得到“请求”模块未找到错误。然后我尝试下载请求模块,并将其放在与__init__.py相同的文件夹中,用于googlemaps。它似乎仍然认为我没有请求文件,即使我有该目录并且其中有一个__init__.py文件,我在尝试运行该文件时仍然有问题。

enter image description here

有更聪明的方法吗?我正在阅读Python路径,但仍不完全确定这意味着什么。作为参考,我打印了sys.path。我想知道是否有一种方法可以将我所有的python包放在一个地方(一个lib?)而不必每次我想运行它们时手动下载包。

enter image description here

可行的问题: - 如何设置我的导入,以便我可以(1)运行此程序,(2)不必每次都手动下载它们?

其他Notes =我正在运行Python 2.7

编辑 - 尝试安装虚拟环境但仍然无法运行程序,即使它已经安装了。

enter image description here

编辑v2 -

enter image description here

enter image description here

编辑v3:仍然无法让GoogleMaps项目投入使用

enter image description here

编辑v4:从头开始,按照http://docs.python-guide.org/en/latest/dev/virtualenvs/

的指示,使用venv

enter image description here

2 个答案:

答案 0 :(得分:1)

我打算建议你肯定得到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
>>> 

答案 1 :(得分:0)

听起来您的全局site-packages文件夹不在您的路径上。 This answer可以帮助您查看site-packages的位置,并通过在终端提示符下键入echo $PATH来查看路径中的内容。如果他们不在您的路径上,您可以通过搜索$PATH变量以及如何在.bashrc.bash_profile或{{1}中设置/更新变量来解决此问题。用户主目录中的文件。

更好的方法是使用类似virtualenv之类的东西,这样你就可以在每个项目的基础上管理你的Python依赖项,而不是摔跤全局依赖项不匹配,如果你需要一个版本的{ {1}}用于一个项目,另一个版本用于单独的项目...如果您尝试管理全局包,则会变得毛茸茸。

安装.profile后快速入门(而不是唯一的方法):

  1. 来自项目的目录类型requests
  2. virtualenv。这会将您从全局virtualenv env切换到. env/bin/activate
  3. 中安装的全局python
  4. env/依赖项
  5. 当您完成或想要切换到另一个项目时,只需键入pip install
  6. 即可
  7. 确保在返回该项目时重复2号