问题标签 [runpy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 单元测试__main__.py
我有一个 Python 包(Python 3.6,如果有区别的话),我设计为作为“python -m包 参数”运行,我想为 __main__.py 模块编写单元测试。我特别想验证它是否正确设置了退出代码。是否可以使用 runpy.run_module 执行我的 __main__.py 并测试退出代码?如果是这样,我如何检索退出代码?
更清楚地说,我的 __main__.py 模块非常简单。它只是调用一个已经过广泛单元测试的函数。但是当我最初编写 __main__.py 时,我忘记了将该函数的结果传递给 exit(),所以我希望在单元测试中模拟主函数以确保正确设置退出代码。我的单元测试看起来像:
我的问题是,我怎样才能得到我在这里写的“mod_rc”?
谢谢。
python - 从脚本执行 runpy.run_path 时出错
我有一个小的 python 文件c:\tmp\server_config
,它定义了一个字典,如下所示:
我希望从另一个脚本中访问这本字典。我可以从命令行执行以下命令:
但是,当我尝试settings = run_path("c:\\tmp\\server_config.py")
从另一个脚本中执行时,我得到以下 Traceback:
我在做什么错(Python 3.7,Windows10)?
python - 如何成功编译 python 3.x
在尝试编译 python 3.7 时,我点击了Could not import runpy module
:
任何有关如何克服这一点并安装 python3.7 的建议表示赞赏。
编辑 - 下面列出的解决方案似乎适用于各种其他 python 版本,所以我将标题从 3.7 更改为 python 3.x
python - 在 runpy 中使用多处理
我有一个使用multiprocessing
. 我正在使用另一个脚本执行此模块runpy
。但是,这会导致 (1) 模块运行两次,以及 (2)multiprocessing
作业永远不会完成(脚本只是挂起)。
在我的最小工作示例中,我有一个脚本runpy_test.py:
和一个目录module_test包含一个空的__init__.py和一个__main__.py:
当我运行runpy_test.py时,我得到:
脚本挂起。
如果我删除pool.map
调用(或者如果我直接运行__main__.py,包括pool.map
调用),我会得到:
我在 Python 2.7.5 中的 Scientific Linux 7.6 上运行它。
python - 更改 UniVerse 中的默认 RUNPY 目录
我有 UniVerse 11.3.1,并且一直在利用Rocket 的u2py
模块来运行 python 代码。总的来说,这很棒。从 PICK 调用 python 代码时,我通常会这样做PyCallFunction
。但是,我有许多直接从RUNPY
TCL 中的命令运行的脚本。
在重构我的一些目录时,我不再让PP
目录存放我的 python 代码。我可以从一个新目录调用我的脚本,比如PYSCRIPTS
,但这意味着如果我有一个调用的 bash 或 TCL 脚本,RUNPY
我现在必须明确地调用我从哪个目录调用它:
RUNPY PYSCRIPTS test.py
而不是RUNPY test.py
.
有没有办法更改RUNPY
查看的默认目录?这与 PYTHONPATH 配置有关,还是在 UniVerse 二进制文件中硬编码?一个小小的不便,但我宁愿通过配置而不是硬编码来处理这些脚本的父目录。
python-3.x - argparse 在调用脚本时有效,但在合并到新脚本时无效
这是我的基本问题:
我有以下内容: 文件名:parseFastq.py 执行:通过命令行代码运行它:python3 parseFastq.py --fastq /Users/remaining_dir/test1.fastq
此代码有效!
但是,当我复制 parseFastq.py 的组件时,就会出现问题。
下面是代码:
首先定义类...这部分在我的新脚本上运行良好。
这是在同一个脚本中调用它时不起作用的代码;它与将碎片放入:
我尝试了以下方法,但无法获得应包含以下元组的 fastqfile: (seqHeader,seqStr,qualHeader,qualStr)
尝试:
错误:
尝试:
输出[332]:
下一行:
错误:
如果有帮助,我将包含一些示例 fastq 数据
任何帮助将不胜感激为什么当我运行脚本时它会起作用,但现在当我尝试并合并到脚本中时
python - runpy 可以安全使用吗?
我正在编写一些需要来自下游包层次结构的数据的代码。考虑以下项目结构:
以及以下代码:
这里的重点是main.py
不导入subpck.module
,所以后者的代码没有运行。但是,我已经成功使用runpy
inmain.py
运行subpck.module
并获得了预期的结果。
我的问题是这样的:
如果我能以某种方式弄清楚如何封装runpy
in的使用SomeClass
,这样做安全吗?
我一直在阅读runpy
文档,但如果我遗漏了什么,我会很紧张。我也没有听说这对于可能在生产中使用的代码是否是一个很大的“禁忌”。
任何帮助表示赞赏。
python-3.x - 捕获 runpy.run_module 标准输出
我无法使用 StringIO 将 runpy.run_module 的标准输出捕获到变量中。
为了演示这个问题,我使用 arg 开关创建了一个名为 runpy_test.py 的脚本(代码如下);
- 0 = 不重定向标准输出。
- 1 = 使用 StringIO 重定向,捕获到变量,打印变量。
控制台输出
我期待python .\runpy_test.py 1
打印pip 20.0.2 from C:\ProgramData\Anaconda3\lib\site-packages\pip (python 3.6)
,但正如您从上面的控制台捕获中看到的那样,我什么也没得到。
运行py_test.py
我猜sys.stdout
在打印之前没有正确地重新初始化,因为与 相关runpy.run_module
,但不确定如何调试。任何想法都会很棒,解决方案会更好。
我的环境是使用 conda 4.8.3 的 Python 3.6.10。
提前致谢。
python - 从主脚本运行具有不同 Python 版本的多个脚本
假设我有 3 个接受用户输入的脚本,可能有不同的 Python 版本,并在不同的模块中导入:
脚本 #1
脚本 #2
脚本 #3
我想创建一个主脚本,A)按顺序运行每个脚本(例如:脚本 #2 在脚本 #1 完成之前不会运行),B)仍然允许用户从主脚本输入用户输入, C) 使用正确的 Python 版本运行脚本(如果可能,使用具有必要模块/包的特定环境)
我见过多个使用subprocess
withPopen
或 call 的例子:
但我也看到警告不要使用suprocess
来执行此操作(尤其是使用)(不知道为什么)。Popen
我也不确定如何使用 subprocess 指定 Python 版本和输入变量(尽管看起来您可以使用Popen
以某种方式输入 args 作为字符串)。我知道还有其他的 mods/pacakges,比如 runpy,也可以用于类似的效果。关于使用什么以及如何在这里最好地实现我的最终目标的任何建议?