编辑:
最后我做到了,但整个过程是一件痛苦的事,为了将来的发展,我绝对会听取@Martijn Pieters的建议
我是python新手,需要把我在Windows(cygwin)机器上做的python项目转移到Linux上。项目使用IP地址模块。我不能从Linux机器上访问根目录,也不能访问internet,所以安装任何东西都是不可能的。所以我把我的项目文件(ipfind_5.py)和IP地址.py我在cygwin的/lib/python2.7/site-packages目录下找到的模块。问题是,当我发出脚本时,会出现以下错误:[wakatana@zeus]$ python ipfind_v5.py
Traceback (most recent call last):
File "ipfind_v5.py", line 28, in ?
import ipaddress as IP
File "/home/wakatana/ipfind.py/ipaddress.py", line 28
if b'\0'[0] == 0: # Python 3 semantics
^
SyntaxError: invalid syntax
我换了
^{pr2}$
与if '\x00' == 0:
但后来又发生了一个错误:[wakatana@zeus ipfind.py]$ python ipfind_v5.py
Traceback (most recent call last):
File "ipfind_v5.py", line 28, in ?
import ipaddress as IP
File "/home/wakatana/ipfind.py/ipaddress.py", line 1123
except ValueError as exc:
^
SyntaxError: invalid syntaxsed -i 's/ as exc/, exc/' ipaddress.py[wakatana@zeus ipfind.py]$ python ipfind_v5.py
Traceback (most recent call last):
File "ipfind_v5.py", line 28, in ?
import ipaddress as IP
File "/home/wakatana/ipfind.py/ipaddress.py", line 1173
if isinstance(b, bytes)
^
SyntaxError: invalid syntax
然后我重写这一部分:return u'.'.join(_compat_str(struct.unpack('!B', b)[0]
if isinstance(b, bytes)
else b)
for b in _compat_to_bytes(ip_int, 4, 'big'))
这是相当于ualents的代码:retval=[]
for b in _compat_to_bytes(ip_int, 4, 'big'):
if isinstance(b, str):
retval.append(_compat_str(struct.unpack('!B', b)[0]))
else:
retval.append(b);
return unicode(".".join(retval))
配置:
Linux版本:
Python 2.4.3
Windows(cygwin)版本:
Python 2.7.3