从本地目录安装(和访问)Python模块

时间:2013-01-27 20:15:40

标签: python install portability

我正在尝试在Python中创建一个应用程序,该应用程序将从各种不同计算机上的USB驱动器运行。让我们暂时假设客户端计算机安装了Python 并将其放在一边。

我的应用程序使用cherrypy 启动一个local web server,但可以安全地假设它不会安装在运行它的计算机上。

尽可能透明地解决这个问题最好的是什么?

它应该可供非技术用户使用,他们不必担心自己安装任何依赖项。

目前,我已经使用我的应用程序打包了cherrypy source的副本,如果程序检测到它尚未安装,则会运行setup.py但{{1}避免任何权限问题。

这似乎不太好。

是否可以在我的应用中包含内置包?我尝试过这样的事情:

  

/ MyApp的/库/ CherryPy的

我从--user flag复制了cherrypy目录。这是预构建的,因此可能无法正常工作。我还尝试了另一种方法,我运行CherryPy archive(创建了一个构建目录)并复制了这些文件。

  

/myapp/somefile.py

setup.py

从理论上讲,这应该有效......但事实并非如此。当我尝试运行服务器时(使用import myapp.libs.cherrypy as cherrypy ),它运行服务器的两个实例,这显然会导致问题。

所以,问题是:首先,我是否完全以错误的方式解决这个问题?如何为我的应用程序提供第三方软件包?

1 个答案:

答案 0 :(得分:1)

这是由于PYTHONPATH问题。在使用您导入或外部使用的软件包时,我建议使用虚拟envs和pip作为标准。

这里有一些很棒的笔记:https://python-guide.readthedocs.org/en/latest/

如果您想导入自己的代码。我将您的PYTHONPATH(在dev_folder下面的情况下)设置为根开发目录并遵循此结构......

dev_folder \
- project_name \
    - main_script.py
    - helper.py
    - libary1 \
        - __init__.py
        - lib1.py
    - libary2 \
        - __init__.py
        - lib2.py

您显然会为库文件夹/包找到更好的名称: - )

希望这有帮助。