标签: sys

jupyter 中的 sys.path 和 sys.executable 不正确,但应用的修复不起作用

我已将 jupyter 配置为从远程计算机使用,并在初始 anaconda 设置时为其设置密码。然后解决这个问题后,我又陷入了另一个问题。在jupyter中不正确sys.pathsys.executable但在pythonipython正确。请参阅下面的详细信息。Anaconda3 已为所有用户安装,并且我正在为我的程序使用一个环境。/opt/anaconda3zud

背景

解决上述问题后,我尝试import igraphjupyter中进行操作,但结果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)

python ipython sys jupyter jupyter-notebook

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

Python sys.stdin引发UnicodeDecodeError

我正在尝试使用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解决此问题

encoding utf-8 sys python-3.x

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

sys.stdout.encoding、locale.getpreferredencoding() 和 sys.getdefaultencoding() 之间有什么区别?

我对 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)

有什么不同?

python encoding locale codepages sys

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

'sys.excepthook' 和多处理

我正在尝试使用带有多处理库的自定义 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 与多处理正常工作?

python multithreading sys

5
推荐指数
0
解决办法
328
查看次数

为什么 sys.stdin.read() 永久返回 ' ' 而不寻求输入?

在玩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)

python sys python-2.7

5
推荐指数
0
解决办法
1152
查看次数

Python 进程池执行器根据信号关闭

我使用主管来运行一些这样的脚本。因此,当主管停止或中断时,我尝试优雅地退出脚本。这是我当前的代码

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)

python sys supervisord concurrent.futures

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

为什么 QtWidgets.QApplication 需要 sys.argv?

大家好,我正在 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)

sys python-3.x pyqt5

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

如何运行从子文件夹导入的 Python 3 脚本?

无论我尝试什么,自从我切换到 Python 3 后,我只能从项目的根文件夹运行导入的脚本,而不能从子文件夹导入。我知道这里有很多关于我收到的错误消息的问题,但建议的解决方案对我不起作用。有人可以为这个小示例项目提供示例解决方案吗?我相信它会受到很多人的赞赏。

\n\n
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\n
Run Code Online (Sandbox Code Playgroud)\n\n

foofun()我在 中定义了该函数foofile.py,并想在 中调用它run.py

\n\n

如果run.py直接在proj里面就可以了。但是(只是为了让事情井井有条)我想将其放在子文件夹中 - 令人惊讶的是,这似乎是不可能的。

\n\n

烦人的是,我的 IDE (PyCharm) 中的自动完成功能表明from foofolder.foofile import foofun应该可以工作。但事实并非如此。我也无法想象任何其他进口:

\n\n

from foofolder.foofile import foofun-->ImportError: No module named 'foofolder'

\n\n

from .foofolder.foofile import foofun--> SystemError: Parent module '' not loaded, cannot perform relative import(与开头的两个点相同。)

\n\n

from proj.foofolder.foofile import foofun--> …

python-import sys

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

从 sys.stdin 读取,以 RETURN 结束用户输入

我正在使用 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 stdin user-input sys

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

将多个字符串参数传递给 Python 脚本

我有一个 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

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