0

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

我的应用程序用于cherrypy 启动a local web server,但可以安全地假设它尚未安装在运行它的计算机上。

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

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

目前,我已将 的副本cherrypy source与我的应用程序打包在一起,如果程序检测到它尚未安装,它会运行setup.py但与--user flag,避免任何权限问题。

这似乎不是很好的做法。

是否可以只在我的应用程序中包含构建的包?我尝试过使用以下方法来执行此操作:

/myapp/libs/cherrypy

cherrypyCherryPy archive. 这是预构建,因此可能无法正常工作。我还尝试了另一种运行方式setup.py(它创建了一个构建目录)并复制了这些文件。

/myapp/somefile.py

import myapp.libs.cherrypy as cherrypy

从理论上讲,这应该有效......但它没有。当我尝试运行服务器(使用cherrpy.quickstart())时,它会运行两个服务器实例,这显然会导致问题。

所以,问题是:首先,我是不是完全走错了路?如何使第三方包可用于我的应用程序?

4

1 回答 1

1

这是由于 PYTHONPATH 问题。在处理从外部导入或获取的包时,我建议使用虚拟环境和 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

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

希望这可以帮助。

于 2013-01-27T20:25:23.413 回答