相关疑难解决方法(0)

给定完整路径如何导入模块?

如何在完整路径下加载Python模块?请注意,该文件可以位于文件系统中的任何位置,因为它是一个配置选项.

python configuration python-module python-import

1022
推荐指数
18
解决办法
80万
查看次数

Python 3中execfile的替代方法是什么?

似乎他们在Python 3中取消了通过删除快速加载脚本的所有简单方法 execfile()

有没有一个明显的选择我错过了?

python python-3.x

325
推荐指数
10
解决办法
24万
查看次数

从另一个python脚本运行python脚本,传入args

我想从另一个Python脚本运行Python脚本.我想传递变量,就像我使用命令行一样.

例如,我会跑我的,将通过值(0,1,2,3)的列表迭代第一个脚本,并通过那些到第二脚本script2.py 0,然后 script2.py 1,等

我找到了SO 1186789这是一个类似的问题但ars的答案调用了一个函数,因为我想运行整个脚本而不仅仅是一个函数,而balpha的答案调用脚本但没有args.我将其改为以下类似的测试:

execfile("script2.py 1")
Run Code Online (Sandbox Code Playgroud)

但它没有正确接受变量.当我打印出sys.argvscript2.py时,它是对第一个脚本"['C:\ script1.py']的原始命令调用.

我真的不想改变原始脚本(即我的例子中的script2.py),因为我不拥有它.

我认为必须有办法做到这一点,我很困惑你是怎么做到的.

python

291
推荐指数
6
解决办法
69万
查看次数

如何让一个python文件运行另一个?

如何制作一个python文件来运行另一个?

例如,我有两个.py文件.我想要运行一个文件,然后让它运行另一个.py文件.

python

274
推荐指数
6
解决办法
53万
查看次数

子进程中'shell = True'的实际含义

我用subprocess模块调用不同的进程.但是,我有一个问题.

在以下代码中:

callProcess = subprocess.Popen(['ls', '-l'], shell=True)
Run Code Online (Sandbox Code Playgroud)

callProcess = subprocess.Popen(['ls', '-l']) # without shell
Run Code Online (Sandbox Code Playgroud)

两者都有效.阅读文档后,我开始知道这shell=True意味着通过shell执行代码.这意味着在缺席的情况下,该过程将直接启动.

那么我应该更喜欢我的情况 - 我需要运行一个进程并获得其输出.从shell内部或外部调用它有什么好处.

python subprocess

236
推荐指数
5
解决办法
14万
查看次数

如何正确确定当前脚本目录?

我想看看在python中确定当前脚本目录的最佳方法是什么?

我发现,由于调用python代码的方法很多,很难找到一个好的解决方案.

这是一些问题:

  • __file__如果脚本执行时未定义exec,execfile
  • __module__ 仅在模块中定义

用例:

  • ./myfile.py
  • python myfile.py
  • ./somedir/myfile.py
  • python somedir/myfile.py
  • execfile('myfile.py') (来自另一个脚本,可以位于另一个目录中,并且可以有另一个当前目录.

我知道没有完美的解决方案,但我正在寻找解决大多数情况的最佳方法.

最常用的方法是os.path.dirname(os.path.abspath(__file__)),如果你从另一个脚本执行脚本,这实际上不起作用exec().

警告

任何使用当前目录的解决方案都将失败,根据调用脚本的方式或者可以在运行的脚本中更改它,可能会有所不同.

python pythonpath dirname

229
推荐指数
8
解决办法
10万
查看次数

在ipython中运行python脚本

是否可以从ipython内部运行python脚本(而不是模块)而不指示其路径?我试图设置PYTHONPATH但它似乎只适用于模块.我想执行

%run my_script.py
Run Code Online (Sandbox Code Playgroud)

不在包含该文件的目录中.

python path ipython

113
推荐指数
5
解决办法
15万
查看次数

使用python和tkinter在按钮单击上调用python脚本

我有一个python脚本,它具有向用户发送电子邮件的功能.我执行了这个脚本,它工作正常.在另一个python脚本中我只有一个按钮,所以当我点击这个按钮时,我想要另一个发送电子邮件的python脚本来执行.我编写了以下代码:

#!/usr/bin/python
import sys
import os
import Tkinter
import tkMessageBox
top=Tkinter.Tk()

def helloCallBack():
    os.system('SendEmail.py')

B=Tkinter.Button(top,text="hello",command= helloCallBack)
B.pack()
top.mainloop()
Run Code Online (Sandbox Code Playgroud)

单击按钮时出现以下错误:

sh:1:SendEmail.py:找不到.

你能让我知道这个错误的原因是什么以及如何解决它.谢谢.

tkinter python-2.7

11
推荐指数
2
解决办法
2万
查看次数

使用子进程在python脚本中使用输入调用python脚本

我有一个脚本a.py,在执行它时会向用户询问某些查询并以json格式构造输出.使用python子进程,我可以从另一个名为的脚本调用此脚本b.py.一切都按预期工作,除了我无法获得变量的输出?我在Python 3中这样做.

python subprocess python-3.x

6
推荐指数
1
解决办法
7711
查看次数

如何给exec代码有意义的位置来显示异常?

下面给出的代码将exec在没有编译错误的情况下通过,但会在"error"语句中导致运行时错误:

globs = {}

exec('''
def main():
    print('Hello Python')
    error  # Makes run-time error
''', globs)

globs['main']()
Run Code Online (Sandbox Code Playgroud)

错误消息是:

    Traceback (most recent call last):

      File "C:\work\sandbox.py", line 11, in 
        globs['main']()
      File "<string>", line 4, in main
    NameError: name 'error' is not defined

仅位置信息File "<string>", line 4, in main不是非常有用,例如在尝试定位可以来自文件的代码的原点时.

请注意,以上是显示问题的简化示例.在实际程序中,代码定义了在主程序中的不同位置执行的若干功能.

有没有办法从exec"<string>"以外的其他位置提供代码,所以如果exec代码中发生异常,则会显示其他位置?

python

5
推荐指数
1
解决办法
396
查看次数