已解决:为什么导入 Python 库会引发语法错误?
SOLVED: Why does importing a Python library throw a syntax error?
已解决:查看答案,我自己的答案
我有一台 Windows 机器,其中一些 Python 代码可以工作,但现在需要在新机器上工作。
我已经安装了相同的 Python 版本 3.6.5。
第一个问题是,当我 运行 代码时,它 无法 找到 re.py
库,实际上在 Python 的 Lib 文件夹中。所以我添加了 sys.path.append('C:\Python\Lib')
现在它可以找到它了。
但现在我从那个库中得到语法错误,我说 import re
,那行在 re.py 库中的某些行引发错误。如果我导入 getopt
,我也会在某行出现语法错误。
这怎么可能?安装附带的 pythons Lib 文件中的语法错误?
问题是它在机器 1 上运行,相同的文件内容,相同的 python 版本。我的印象是我在这个版本的库的 python.exe
版本中有错误,但我只是下载了 Windows 安装程序并安装了它。
我什至不知道 google 有什么用,有人知道吗?我正在第 5 行的 WeblogicAuto.py
中导入 re。
D:\Jenkins\workspace\weblogic-full-deployment-copy\weblogic-deployment>MainAutoDeployment.py -f DEV -v 2.61.0.12
Initializing WebLogic Scripting Tool (WLST) ...
Welcome to WebLogic Server Administration Scripting Shell
Type help() for help on available commands
Problem invoking WLST - Traceback (innermost last):
File "D:\Jenkins\workspace\weblogic-full-deployment-copy\weblogic-deployment\WeblogicAuto.py", line 5, in ?
File "C:\Python\Lib\re.py", line 247
b"_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890")
^
SyntaxError: invalid syntax
您正在使用 WLST(WebLogic 脚本工具)。
WLST 是 python 的非常具体的分布:
- 是jython
- 大致对应python 2.7
并且您尝试从 CPython 3.6.5 发行版导入库。
您需要:
- 删除您之前添加的
sys.path.append
- 检查 python jython 库路径中的库。这可能是
$HOME/.jython
或 WLST 特定路径(查看 WebLogic 文档)
好的,非常感谢大家,我找到了解决方案,它是关于 Jython 库的。如果有人偶然发现这个问题,我会尝试详细说明。
我在这里所做的是将 java 模块部署到 Oracle Weblogic 应用程序服务器。所以这个答案也会帮助那些试图从 python.
部署到 Weblogic 的人
从一开始我就避免在我进行部署的机器上安装 Webloglogic 软件(那是一个 Jenkins 从机,运行 这些 python 文件,简单的工作)。
我注意到第一台机器(第一台 Jenkins slave)安装了 Weblogic,但我喜欢保持最小化:)
您需要的是 weblogic.jar 和(目前不确定)wlfullclient.jar,它是在 Weblogic 服务器上生成的(google 如果需要或者您可能已经拥有它) .
问题是,即使我有纯 python 代码,当您使用 java weblogic.WLST [=39 调用另一个 python 代码时=],用jython应用就会运行!它的 sys 路径中需要它的库。
在 jython 文件中,我在两台机器(从机)上添加了 print(sys.path) 然后 运行。我注意到这些机器上的路径是不同的,即使你在命令提示符下输入它,你也会得到相同的结果,但与 Jenkins 运行s 时不同。
因此,我没有查看如何修复这些路径并将文件复制到它们,而是在它期望的位置创建了文件夹,并从第一台机器复制了它们(很容易修复,我稍后可能会研究)。
这些是 sys.path 和需要的文件,存在于第一台机器上:
['D:\Jenkins\weblogic\Lib', '__classpath__', 'C:/bea10/wlserver_10.3/server/lib/weblogic.jar', 'C:/bea10/wlserver_10.3/common/wlst/modules/jython-modules.jar/Lib', 'C:/bea10/wlserver_10.3/common/wlst', 'C:/bea10/wlserver_10.3/common/wlst/lib', 'C:/bea10/wlserver_10.3/common/wlst/modules', '.']
这是在第二台机器上 sys.path,所以我简单地复制到那里:
['D:\Jenkins\weblogic\Lib', '__classpath__', 'D:/Jenkins/server/lib/weblogic.jar', 'D:/Jenkins/common/wlst/modules/jython-modules.jar/Lib', 'D:/Jenkins/common/wlst', 'D:/Jenkins/common/wlst/lib', 'D:/Jenkins/common/wlst/modules', '.']
注意 jython-modules.jar 是一个文件,所以如果我了解 java 的工作原理,/Lib 应该来自该文件。
如需了解更多详情,请随时与我联系。
已解决:查看答案,我自己的答案
我有一台 Windows 机器,其中一些 Python 代码可以工作,但现在需要在新机器上工作。
我已经安装了相同的 Python 版本 3.6.5。
第一个问题是,当我 运行 代码时,它 无法 找到 re.py
库,实际上在 Python 的 Lib 文件夹中。所以我添加了 sys.path.append('C:\Python\Lib')
现在它可以找到它了。
但现在我从那个库中得到语法错误,我说 import re
,那行在 re.py 库中的某些行引发错误。如果我导入 getopt
,我也会在某行出现语法错误。
这怎么可能?安装附带的 pythons Lib 文件中的语法错误?
问题是它在机器 1 上运行,相同的文件内容,相同的 python 版本。我的印象是我在这个版本的库的 python.exe
版本中有错误,但我只是下载了 Windows 安装程序并安装了它。
我什至不知道 google 有什么用,有人知道吗?我正在第 5 行的 WeblogicAuto.py
中导入 re。
D:\Jenkins\workspace\weblogic-full-deployment-copy\weblogic-deployment>MainAutoDeployment.py -f DEV -v 2.61.0.12
Initializing WebLogic Scripting Tool (WLST) ...
Welcome to WebLogic Server Administration Scripting Shell
Type help() for help on available commands
Problem invoking WLST - Traceback (innermost last):
File "D:\Jenkins\workspace\weblogic-full-deployment-copy\weblogic-deployment\WeblogicAuto.py", line 5, in ?
File "C:\Python\Lib\re.py", line 247
b"_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890")
^
SyntaxError: invalid syntax
您正在使用 WLST(WebLogic 脚本工具)。
WLST 是 python 的非常具体的分布:
- 是jython
- 大致对应python 2.7
并且您尝试从 CPython 3.6.5 发行版导入库。
您需要:
- 删除您之前添加的
sys.path.append
- 检查 python jython 库路径中的库。这可能是
$HOME/.jython
或 WLST 特定路径(查看 WebLogic 文档)
好的,非常感谢大家,我找到了解决方案,它是关于 Jython 库的。如果有人偶然发现这个问题,我会尝试详细说明。
我在这里所做的是将 java 模块部署到 Oracle Weblogic 应用程序服务器。所以这个答案也会帮助那些试图从 python.
部署到 Weblogic 的人从一开始我就避免在我进行部署的机器上安装 Webloglogic 软件(那是一个 Jenkins 从机,运行 这些 python 文件,简单的工作)。 我注意到第一台机器(第一台 Jenkins slave)安装了 Weblogic,但我喜欢保持最小化:)
您需要的是 weblogic.jar 和(目前不确定)wlfullclient.jar,它是在 Weblogic 服务器上生成的(google 如果需要或者您可能已经拥有它) .
问题是,即使我有纯 python 代码,当您使用 java weblogic.WLST [=39 调用另一个 python 代码时=],用jython应用就会运行!它的 sys 路径中需要它的库。
在 jython 文件中,我在两台机器(从机)上添加了 print(sys.path) 然后 运行。我注意到这些机器上的路径是不同的,即使你在命令提示符下输入它,你也会得到相同的结果,但与 Jenkins 运行s 时不同。
因此,我没有查看如何修复这些路径并将文件复制到它们,而是在它期望的位置创建了文件夹,并从第一台机器复制了它们(很容易修复,我稍后可能会研究)。
这些是 sys.path 和需要的文件,存在于第一台机器上:
['D:\Jenkins\weblogic\Lib', '__classpath__', 'C:/bea10/wlserver_10.3/server/lib/weblogic.jar', 'C:/bea10/wlserver_10.3/common/wlst/modules/jython-modules.jar/Lib', 'C:/bea10/wlserver_10.3/common/wlst', 'C:/bea10/wlserver_10.3/common/wlst/lib', 'C:/bea10/wlserver_10.3/common/wlst/modules', '.']
这是在第二台机器上 sys.path,所以我简单地复制到那里:
['D:\Jenkins\weblogic\Lib', '__classpath__', 'D:/Jenkins/server/lib/weblogic.jar', 'D:/Jenkins/common/wlst/modules/jython-modules.jar/Lib', 'D:/Jenkins/common/wlst', 'D:/Jenkins/common/wlst/lib', 'D:/Jenkins/common/wlst/modules', '.']
注意 jython-modules.jar 是一个文件,所以如果我了解 java 的工作原理,/Lib 应该来自该文件。
如需了解更多详情,请随时与我联系。