我应该将我的Python项目添加到site-packages目录,还是将我的项目附加到PYTHONPATH?

时间:2014-05-13 23:04:06

标签: python environment-variables pythonpath

我有一个Python项目,其中包含三个组件:主要可执行脚本,这些脚本所依赖的模块,以及这些脚本操作的数据(sqlite3数据库,平面文件等)。顶级有一个__init__.py文件,以便其他程序也可以根据需要从模块中借用。

问题是,将我的项目移动到默认的site-packages目录中是更“Pythonic”还是“更正”,或者修改PYTHONPATH以在项目上方包含一个目录(以便可以从中导入项目) ?一方面,我所描述的并不是严格意义上的“包”,而是一个带有可被视为包的数据的“项目”。所以我倾向于修改PYTHONPATH的方向(毕竟,PYTHONPATH必须存在是有原因的,对吗?)

1 个答案:

答案 0 :(得分:1)

绝对不要将你的项目添加到site-packages这会破坏你的系统Python安装,并且会在其他应用程序到来时重新启动,或者你需要安装一些东西。

最后有两种流行的选择以隔离的方式安装python应用程序

使用virtualenv

请参阅virtualenv项目。它允许

  • 创建新的隔离python环境 - 此环境的python与系统1不同,并且具有自己的PYTHONPATH设置,这允许将所有已安装的软件包保密。
  • 从命令行激活和停用给定的virtualenv以用于命令行使用。在activate之后,您可以运行pip install等等,这只会影响给定的virtualenv安装。
  • 通过virtualenv Python副本启动调用任何Python脚本 - 这将使用相关的virtualenv(注意,不需要调用任何activate

使用zc.buildout

此包提供命令buildout。有了这个,您可以使用特殊的配置文件,这允许使用所有包和脚本创建本地python环境。

结论

  • virtualenv今天似乎更受欢迎,我觉得学习和使用更容易
  • zc.buildout可能也适合你,但要为更长的学习时间做好准备
  • 安装到系统中Python目录应始终保留用于非常特殊的情况(pip,easy_install),最好避免使用它。
  • 安装到私人目录和操作PYTHONPATH也是一个选项,但你会重复,virtualenv已提供的内容