`
yessir163
  • 浏览: 33027 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ActivePython PyPM无法正常使用的问题

阅读更多

ActivePython的Python包管理工具PyPM可以方便的帮助用户安装所需的包文件,但是今天在Windows上使用PyPM时,遇到一个多语言支持的问题。

 

最近在看twisted,在一台没有装过Python的机器上,安装了ActivePython,并利用PyPM顺利安装了twisted。

 

而在另外一台机器上则是直接从twisted官网上下载安装包安装的,结果在安装PyCrypto时遇到错误:

 

Unable to find vcvarsall.bat

Google一番发现,需要使用和编译所用Python同样版本的Visual Studio编译器去编译PyCrypto的源代码,才能安装。好在有人已经将使用各种Visual Studio版本编译好的PyCrypto包共享出来,直接下载所需的即可。可参考以下链接:

 

    http://www.voidspace.org.uk/python/modules.shtml#pycrypto

    http://stackoverflow.com/questions/11405549/how-do-i-install-pycrypto-on-windows

由此体会到PyPM的方便之处,而且利用PyPM的search命令可以很方便查找相关包的信息。

 

今天又在那台自己手动安装twisted的电脑上查看Python相关资料,顺手用PyPM查询一些包的信息,结果发现遇到错误:

error: (OperationalError) unable to open database file None None

 Google到ActivePython社区后,找到这个帖子

    http://community.activestate.com/node/6709

发现是个多语言支持的问题:PyPM将包含包信息的数据库文件存放在site.USER_SITE目录下,这个目录的位置与site.USER_BASE有关。而site.USER_BASE与所使用的OS系统、系统用户名有关。在Windows上这两个的默认值分别为:

site.USER_BASE => %APPDATA%\Python
site.USER_SITE => %APPDATA%\Python\Python版本号\site-packages

 如果使用的用户名是英文的,就不会遇到问题,如果是其他非ASCII字符的用户名,就会遇到这个问题。

 

可以通过修改site.py中USER_BASE和USER_SITE的初始值,将此目录更改为ASCII字符的路径即可。翻了一下site.py的代码,发现这两个全局变量的值,是通过OS的环境变量初始化的,且USER_SITE中包含USER_BASE的值。这样如果通过设定环境变量,改变USER_BASE的值,即可同时修改这两个全局变量。

 

检查发现,USER_BASE的值可由环境变量PYTHONUSERBASE设定。那么最简单的办法就是把这个环境变量和Windows默认的All Users关联起来:

PYTHONUSERBASE=%ALLUSERSPROFILE%\Application Data\Python

 至此问题解决。

2
3
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics