代码之家  ›  专栏  ›  技术社区  ›  sorin

如何正确地将PyDev与两个不同的Python版本一起使用,并使用调用其他Python脚本的脚本?

  •  2
  • sorin  · 技术社区  · 16 年前

    当我从PyDev运行我的脚本时,这个故事以一个非常奇怪的错误开始。从外部运行相同的脚本不会遇到相同的问题。

    Fatal Python error: Py_Initialize: can't initialize sys standard streams
      File "C:\Python26\lib\encodings\__init__.py", line 123
        raise CodecRegistryError,\
                                ^
    SyntaxError: invalid syntax
    
    This application has requested the Runtime to terminate it in an unusual way.
    Please contact the application's support team for more information.
    

    我找到了发生这种情况的原因:在PyDev中,我使用了两个不同的Python版本:3.1是默认安装,2.6是备用安装。

    我的Windows环境不包含 PYTHONHOME , CLASSPATH , PYTHONPATH 但PyDev确实添加了它们。

    python second.py )第二个脚本将失败,出现上述错误。

    现在我正在寻找一种方法来防止这个问题的发生,因为它将使用非默认python的设置(由PyDev添加)来运行execute默认python。

    python file.py )但是我希望能够从pydev运行我的脚本,并且能够使用默认的或替代的python环境。

    3 回复  |  直到 16 年前
        1
  •  2
  •   sorin    16 年前

    我找到了一个特别可以接受的解决方案,因为它不会干扰在其他系统上运行脚本,只是为了运行 python -E second.py -这将迫使Python忽略Python*环境变量。

        2
  •  0
  •   andyortlieb    16 年前

    我可能不太理解这一点,但我认为您调用的是pydev的一个脚本,它可以正常工作,但是这个脚本执行另一个需要不同版本的脚本。

    不幸的是,这是特定于安装的,您可以使用os.system(“c:\absolute\path\to\proper\version\of\python.exe second.py”)。

    如果PyDev正在设置冲突的环境变量,那么您可能需要查看os.system上的子流程。

    http://docs.python.org/library/subprocess.html#using-the-subprocess-module

        3
  •  0
  •   Fabio Zadrozny    16 年前

    我相信你的电话应该是:

    导入系统

    操作系统(sys.executable+second.py)

    因此,您可以保证您使用的是当前运行的同一个解释器,而不是启动另一个解释器(或者您真的打算使用另一个解释器?)