从文件系统运行pydev项目(从不同的包导入)

时间:2012-06-04 01:35:23

标签: eclipse filesystems pydev packages

我想通过双击主模块(在eclipse之外)运行我的工作 pydev项目python代码:xxx.py

问题是由于我的导入在不同的包中:

from src.apackage.amodule import obj

当双击xxx.py时,它抱怨它不知道导入的位置(即使我在pydev中运行xxx.py时,神奇知道我正在导入的内容)。< / p>

一个简单的解决方法是删除所有软件包并将所有模块移动到一个目录中(这显然有效,但非常不方便)

如何在不进行此类工作的情况下在文件系统中运行我的代码?

2 个答案:

答案 0 :(得分:2)

这页很好地回答了我的问题:

http://blog.habnab.it/blog/2013/07/21/python-packages-and-you/

底线总是从顶层,最高级别的根目录执行代码(例如,使用执行程序主脚本的最小 .py文件)。然后,始终使用绝对导入,并且您从不会丢失模块问题,因为您从顶级目录启动程序,并且所有导入都基于该“主”路径。

答案 1 :(得分:0)

您遇到的问题是大多数语言的自然行为。程序只知道它的工作路径(它开始的路径),在环境变量中注册的路径以及至少相对路径。

您创建的可执行文件的“神奇之处”在于:它收集所需的所有脚本/模块,并将它们复制/组合在可执行文件的/旁边。然后,可执行文件在所有其他脚本也驻留的目录中运行,并且...

如果您对每次想要在没有PyDev的情况下运行项目时创建可执行文件的解决方法不满意,那么有两种选择。 首先,但不是我建议的那个是在环境变量中注册工作路径。 第二个和我认为更好的一个:创建一个指向python可执行文件的链接并更改文本字段“Target:”的调用字符串。将路径附加到您要运行的脚本的路径。然后更改文本字段“开始于:”并输入项目目录。完成此操作后,您只需双击即可启动项目。

(如果您依赖于既不在路径上也不在项目中的外部库,您可以通过sys模块临时搜索追加到python路径的路径。)

我希望我能帮上忙。