我已将 jupyter 配置为从远程计算机使用,并在初始 anaconda 设置时为其设置密码。然后解决这个问题后,我又陷入了另一个问题。在jupyter中不正确sys.path,sys.executable但在python和ipython中正确。请参阅下面的详细信息。Anaconda3 已为所有用户安装,并且我正在为我的程序使用一个环境。/opt/anaconda3zud
解决上述问题后,我尝试import igraph在jupyter中进行操作,但结果ModuleNotFoundError如下:
import igraph
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-2-73ffca960e68> in <module>
----> 1 import igraph
ModuleNotFoundError: No module named 'igraph'
Run Code Online (Sandbox Code Playgroud)
然后我很快使用我的环境检查了以下详细信息zud,这些详细信息是正确的。
(zud) zuddler@silp252-dl360:~$ which python
/home/zuddler/.conda/envs/zud/bin/python
(zud) zuddler@silp252-dl360:~$ which ipython
/home/zuddler/.conda/envs/zud/bin/ipython
(zud) zuddler@silp252-dl360:~$ which jupyter
/home/zuddler/.conda/envs/zud/bin/jupyter
(zud) zuddler@silp252-dl360:~$ which conda
/opt/anaconda3/bin/conda
(zud) zuddler@silp252-dl360:~$ conda env list
# …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用cURL和Python的BeautifulSoup库编写一个(非常)基本的Web搜寻器(因为它比GNU awk和一堆正则表达式更容易理解)。
目前,我正在尝试使用cURL(即curl http://www.example.com/ | ./parse-html.py)将网页的内容通过管道传递给程序
由于某种原因,Python会UnicodeDecodeError因为一个无效的起始字节而抛出a (我已经看过这个答案以及关于无效起始字节的这个答案,但没有弄清楚如何从中解决问题)。
具体来说,我尝试a.encode('utf-8').split()从第一个答案开始使用。第二个答案只是说明了问题(Python发现无效的启动字节),尽管它没有给出解决方案。
我试图将cURL的输出重定向到文件(即,curl http://www.example.com/ > foobar.html修改程序以接受文件作为命令行参数,尽管这样做会导致相同的结果UnicodeDecodeError。)
我检查了一下,据我所知,locale charmapis 的输出UTF-8表示我的系统正在编码字符UTF-8(这使我对此感到特别困惑UnicodeDecodeError。
目前,导致错误的确切行是html_doc = sys.stdin.readlines().encode('utf-8').strip()。我尝试将其重写为for循环,尽管遇到了同样的问题。
到底是什么引起的UnicodeDecodeError,我应该如何解决?
编辑:
通过更改行html_doc = sys.stdin.readlines().encode('utf-8').strip()来html_doc = sys.stdin解决此问题
我对 python 很陌生,对这种编码的东西很困惑。到目前为止,我已经阅读了以下类型的“编码”:
import sys
import locale
print (sys.stdout.encoding)
print (locale.getpreferredencoding())
print (sys.getdefaultencoding())
Run Code Online (Sandbox Code Playgroud)
输出:
utf8
cp1252
utf-8
Run Code Online (Sandbox Code Playgroud)
有什么不同?
我正在尝试使用带有多处理库的自定义 sys.excepthook 来处理所有线程上的异常。我知道python有一个突出的错误,它阻止了它与 Threading 库一起正常工作,并且测试表明这也会影响多处理。
导致我找到它的 Python 错误和Stackoverflow 帖子都有针对 Threading 库的解决方法,但没有针对多处理的解决方法。我试图调整解决方法以用于多处理,但仍像往常一样抛出异常。
def install_thread_excepthook():
import sys
start_old = multiprocessing.Process.start
def start(*args, **kwargs):
try:
start_old(*args, **kwargs)
except (KeyboardInterrupt, SystemExit):
raise
except:
sys.excepthook(*sys.exc_info())
multiprocessing.Process.start = run
Run Code Online (Sandbox Code Playgroud)
如何使 sys.excepthook 与多处理正常工作?
在玩sys.stdin.read()(终端,Mac OS Sierra)时,发现它变得无法使用的奇怪行为。发生了什么?
# Python 2.7.13
import sys
sys.stdin.read()
# waits for input
# user presses ctrl-d (without any input)
# returns ''
sys.stdin.read()
# doesn't wait for input
# immediately returns ''
sys.stdin.read()
# ''
sys.stdin.read()
# ''
Run Code Online (Sandbox Code Playgroud)
注意:ctrl+ d= Mac上的EOF,Windows上的ctrl+z
更新:我注意到任何长度为 5 的字符串与一个新行的行为相同......较短/较长的字符串或更多/较少的新行行为正常......
# Python 2.7.13
import sys
sys.stdin.read()
12345
# press ctrl-d twice (only way to make single line string work?)
'12345'
# worked properly
sys.stdin.read()
1234
# user …Run Code Online (Sandbox Code Playgroud) 我使用主管来运行一些这样的脚本。因此,当主管停止或中断时,我尝试优雅地退出脚本。这是我当前的代码
import concurrent.futures
import random
import os
import signal
import sys
executor = concurrent.futures.ProcessPoolExecutor(max_workers=2)
some_flag = True
def some_func():
while some_flag:
executor.submit(print_some_num)
def print_some_num():
print("From worker :{}".format(os.getpid()))
print(random.randint(0,10))
def handler(arg1, arg2):
print("Got interrupt")
some_flag = False
sys.exit("Run for ur life")
#executor.shutdown(wait = False) ----> not working
print("Shutdown")
signal.signal(signal.SIGTERM,handler)
signal.signal(signal.SIGINT,handler)
if __name__ == '__main__':
some_func()
Run Code Online (Sandbox Code Playgroud)
这工作正常,现在当我读到 executor.shutdown(wait=True/False) 时我很困惑。所以我尝试了一下,但无法让执行程序关闭(它只是挂起)。请帮我解答这些问题
1) what does executor.shutdown do that sys.exit() doesn't do.
2) What is advisable in production environment? If executor shutdown is required, please help …Run Code Online (Sandbox Code Playgroud) 大家好,我正在 youtube 上的一系列教程中学习 pyqt5,我不明白为什么QtWidgets.QApplication有这样的论点:sys.argv我不熟悉sys库,我阅读了文档,但仍然没有任何线索,所以抱歉,我知道这个问题有点菜鸟。
import sys
from PyQt5 import QtWidgets
def window():
app = QtWidgets.QApplication(sys.argv)
w=QtWidgets.QWidget()
w.show()
sys.exit(app.exec_())
window()
Run Code Online (Sandbox Code Playgroud) 无论我尝试什么,自从我切换到 Python 3 后,我只能从项目的根文件夹运行导入的脚本,而不能从子文件夹导入。我知道这里有很多关于我收到的错误消息的问题,但建议的解决方案对我不起作用。有人可以为这个小示例项目提供示例解决方案吗?我相信它会受到很多人的赞赏。
proj\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 foofolder\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 foofile.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 subfolder\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 run.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 __init__.py\nRun Code Online (Sandbox Code Playgroud)\n\nfoofun()我在 中定义了该函数foofile.py,并想在 中调用它run.py。
如果run.py直接在proj里面就可以了。但是(只是为了让事情井井有条)我想将其放在子文件夹中 - 令人惊讶的是,这似乎是不可能的。
烦人的是,我的 IDE (PyCharm) 中的自动完成功能表明from foofolder.foofile import foofun应该可以工作。但事实并非如此。我也无法想象任何其他进口:
from foofolder.foofile import foofun-->ImportError: No module named 'foofolder'
from .foofolder.foofile import foofun--> SystemError: Parent module '' not loaded, cannot perform relative import(与开头的两个点相同。)
from proj.foofolder.foofile import foofun--> …
我正在使用 Py 3.6 中的用户输入编写脚本。
在脚本中,用户被要求在 shell 中输入一个文本部分——可能包含新行。然后输入的文本将保存到 Python 变量中以供进一步处理。
由于用户输入可能包含换行符,我想我不能使用input()但正在使用sys.stdin.read()(如建议here)。
读入输入工作正常,但要结束用户输入,用户必须按下 Return 键,然后使用组合键CTRL + d(请参阅此处)。(请参阅下面的当前程序)
sys.stdin.read通过按回车键来结束他们的输入(参见下面的预期程序)编辑:对当前过程的任何其他简化CTRL + d也表示赞赏。
这是可行的吗?
这里有一些技巧,但我想也许有更好的方法
# display text on screen
print("Review this text\n" + text)
# user will copy and paste relevant items from text displayed into Terminal
user_input = sys.stdin.read()
print ("hit ctrl + d to continue")
# …Run Code Online (Sandbox Code Playgroud) 我有一个 python 脚本,需要传递多个参数。第一个参数可能有多个电子邮件,第二个参数是一个字符串,第三个参数也是一个字符串。
假设我有文件
mytest.py:
def tfunc(em, st1, st2):
#### do blah blah blah
def main ():
eml = sys,argv[1].strip()
st1v = sys,argv[2].strip()
st2v = sys,argv[3].strip()
dosom = tfunc(eml, st1v, st2v)
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
现在我测试在命令行上运行该函数的方法是:
python mytest.py xx@yz.com value of file 1 value of file 2
Run Code Online (Sandbox Code Playgroud)
所以参数实际上是 xx@yz.com (还需要知道如果我有多个电子邮件会发生什么),“文件 1 的值”和“文件 2 的值”
在我实际的最终代码中,两个参数都会有空格。然而,当我运行代码时,它正确地获取电子邮件(如果只有一个),但将第二个参数作为值(来自第一个参数)和(来自第一个参数)。但这不是我想要的。
我正在寻找 xx@yz.com 作为第一个参数,“文件 1 的值”作为第二个参数,“文件 2 的值”作为第三个参数。
我可以寻求帮助吗?提前致谢。
python arguments parameter-passing sys command-line-arguments
sys ×10
python ×7
encoding ×2
python-3.x ×2
arguments ×1
codepages ×1
ipython ×1
jupyter ×1
locale ×1
pyqt5 ×1
python-2.7 ×1
stdin ×1
supervisord ×1
user-input ×1
utf-8 ×1