Python错误"导入:无法打开X服务器"

Com*_*cus 37 python

尝试运行一段python代码时出现以下错误:

import: unable to open X server `' @ error/import.c/ImportImageCommand/366.
from: can't read /var/mail/datetime
./mixcloud.py: line 3: syntax error near unexpected token `('
./mixcloud.py: line 3: `now = datetime.now()'
Run Code Online (Sandbox Code Playgroud)

代码:

import requests
from datetime import datetime,date,timedelta

now = datetime.now()
Run Code Online (Sandbox Code Playgroud)

我真的没有看到问题.这是我的服务器出现问题而不是代码本身的问题吗?

Cor*_*erg 71

这些是来自命令shell的错误.你是通过shell运行代码,而不是python.

尝试从python解释器;)

$ python
Python 2.7.5+ (default, Sep 19 2013, 13:48:49) 
[GCC 4.8.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
>>> from datetime import datetime,date,timedelta
>>> 
>>> now = datetime.now()
>>> 
Run Code Online (Sandbox Code Playgroud)

如果您使用的是脚本,则可以直接使用python调用:

$ python mixcloud.py
Run Code Online (Sandbox Code Playgroud)

否则,确保从适当的shebang线开始:

#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)

...然后你可以单独通过名称调用它(假设它被标记为可执行文件):

$ ./mixcloud.py
Run Code Online (Sandbox Code Playgroud)

  • 有一点解释:只需命名一个文件`something.py`就不会导致它在执行`something.py`时以Python的形式运行.所有不是二进制文件(ELF,Mach-O,适用于您的平台的任何东西)都是使用默认shell(通常是`/ bin/sh something.py`)作为解释器运行,除非第一行是像shebang一样的行`#!/ usr/bin/env python`,在这种情况下,它将使用你指定的(`/ usr/bin/env python something.py`)运行. (3认同)

Iza*_*ana 7

检查你的#!line位于python文件的第一行.我收到此错误是因为我将此行放入文件的第二行.

  • 我收到此错误是因为我的#号之前有一个空格。 (2认同)

leo*_*ten 5

您可以在 python 脚本的顶部添加以下行

#!/usr/bin/env python3
Run Code Online (Sandbox Code Playgroud)