通过子过程从另一个python脚本调用python脚本时导入错误的包

一次性的

我正在尝试使用cx_Freeze自动为32位和64位程序创建可执行文件。我有两个单独的python 3.4安装(32位和64位),其中包含所有必需的软件包,它们均对应于其相应的体系结构。

但是,当我执行通过子进程调用不同python安装程序的脚本时,被调用的python子进程会导入错误的包。他们导入软件包,从中调用原始脚本,而不是子进程中调用的python安装软件包。

用64位python调用的最小示例:

#! coding=utf-8
import subprocess as sp
sp.call(["python34-32","test.py"])
sp.call(["python34","test.py"])

test.py仅包含以下行:

import cx_Freeze

第二个过程也调用64位python不会有问题。但是32位将引发以下错误:

ImportError: DLL load failed: %1 is not a valid Win32 application.

这是因为正在调用32位python的子进程从64位python导入cx_freeze。这种情况也可以逆转。当使用32位python执行主脚本时,会发生相同的错误,但是现在是因为在suprocess中调用的64位python导入了32位冻结程序包。

如何停止这种行为,并告诉它从适当的来源导入?

我使用Windows 7 x64和PyDev作为IDE,以防万一,这可能是相关的。

编辑:因此,当从源目录内的命令行执行主脚本时,显然可以使用。由于下面的评论,我想问题在于PyDev如何设置环境变量。

一次性的

显然,PyDev设置了环境变量PYTHONPATH,这是两个子进程用来加载其程序包的路径

如果我在64位python中执行以下脚本:

#! coding=utf-8
import subprocess as sp

sp.call(["python34-32", "test.py"])

test.py包含以下行:

import os
print(os.getenv("PYTHONPATH"))

结果显示为64位python安装设置的标准文件夹。

我的猜测是,我必须在调用32位python之前更改PYTHONPATH变量。有谁知道这是怎么做到的吗?

编辑:更改子进程环境中的PYTHONPATH变量就可以了。在64位python中执行以下操作即可

#! coding=utf-8
import subprocess as sp
import os

env = os.environ
env["PYTHONATH"] = "{INSERT FOLDERS TO 32bit PYTHON}"
sp.call(["python34-32", "test.py"], env=env)

感谢bakuriu使我走上正确的道路。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用子进程调用/ popen从另一个python脚本执行python脚本

来自分类Dev

从另一个python脚本调用python脚本时,Python日志记录挂起

来自分类Dev

从另一个脚本调用python脚本

来自分类Dev

Python; 如何正确调用另一个python脚本作为子进程

来自分类Dev

在我的python脚本中调用另一个python函数时遇到importerror

来自分类Dev

从另一个脚本内部调用一个python脚本

来自分类Dev

添加Python脚本,以便可以在另一个Python脚本中导入

来自分类Dev

从另一个脚本导入python脚本并使用参数运行它

来自分类Dev

从另一个脚本中执行python脚本后如何动态导入变量

来自分类Dev

导入库时来自另一个脚本的非错误消息

来自分类Dev

尝试从另一个python脚本中运行python脚本时,出现“权限被拒绝”!

来自分类Dev

从另一个脚本控制python脚本

来自分类Dev

python将另一个脚本中的变量调用到当前脚本中

来自分类Dev

通过调用另一个PHP脚本生成图表时出现问题

来自分类Dev

无法在python中将变量从一个脚本导入到另一个脚本

来自分类Dev

如何在python中将值从一个脚本导入并更改为另一个脚本?

来自分类Dev

如何在另一个文件目录中的另一个脚本中导入 Python 文件?

来自分类Dev

一个flask-python 脚本如何调用另一个flask-python 脚本

来自分类Dev

在第二个暂停时从另一个python脚本运行一个python脚本

来自分类Dev

如何将Python脚本从一个子包移动到另一个目录/包,并保持向后兼容性

来自分类Dev

脚本错误,该脚本使用不同的shell调用另一个脚本

来自分类Dev

使脚本包包括另一个脚本包

来自分类Dev

从另一个python脚本导入变量需要帮助

来自分类Dev

Python从另一个脚本中的函数导入变量

来自分类Dev

从另一个包导入python模块

来自分类Dev

从另一个包导入python模块

来自分类Dev

如何调用 bash 脚本以通过 ssh 连接从另一个脚本运行

来自分类Dev

脚本调用另一个脚本?

来自分类Dev

从另一个python脚本运行python脚本,但不作为子进程运行

Related 相关文章

  1. 1

    使用子进程调用/ popen从另一个python脚本执行python脚本

  2. 2

    从另一个python脚本调用python脚本时,Python日志记录挂起

  3. 3

    从另一个脚本调用python脚本

  4. 4

    Python; 如何正确调用另一个python脚本作为子进程

  5. 5

    在我的python脚本中调用另一个python函数时遇到importerror

  6. 6

    从另一个脚本内部调用一个python脚本

  7. 7

    添加Python脚本,以便可以在另一个Python脚本中导入

  8. 8

    从另一个脚本导入python脚本并使用参数运行它

  9. 9

    从另一个脚本中执行python脚本后如何动态导入变量

  10. 10

    导入库时来自另一个脚本的非错误消息

  11. 11

    尝试从另一个python脚本中运行python脚本时,出现“权限被拒绝”!

  12. 12

    从另一个脚本控制python脚本

  13. 13

    python将另一个脚本中的变量调用到当前脚本中

  14. 14

    通过调用另一个PHP脚本生成图表时出现问题

  15. 15

    无法在python中将变量从一个脚本导入到另一个脚本

  16. 16

    如何在python中将值从一个脚本导入并更改为另一个脚本?

  17. 17

    如何在另一个文件目录中的另一个脚本中导入 Python 文件?

  18. 18

    一个flask-python 脚本如何调用另一个flask-python 脚本

  19. 19

    在第二个暂停时从另一个python脚本运行一个python脚本

  20. 20

    如何将Python脚本从一个子包移动到另一个目录/包,并保持向后兼容性

  21. 21

    脚本错误,该脚本使用不同的shell调用另一个脚本

  22. 22

    使脚本包包括另一个脚本包

  23. 23

    从另一个python脚本导入变量需要帮助

  24. 24

    Python从另一个脚本中的函数导入变量

  25. 25

    从另一个包导入python模块

  26. 26

    从另一个包导入python模块

  27. 27

    如何调用 bash 脚本以通过 ssh 连接从另一个脚本运行

  28. 28

    脚本调用另一个脚本?

  29. 29

    从另一个python脚本运行python脚本,但不作为子进程运行

热门标签

归档