Решено: Почему импорт библиотеки Python вызывает синтаксическую ошибку? - PullRequest
0 голосов
/ 09 января 2020

решено: посмотрите на ответы, мой собственный ответ

У меня есть Windows машина, в которой работает некоторый код Python, но теперь нужно работать на новой машине.

I установили ту же Python версию 3.6.5.

Первая проблема заключалась в том, что когда я запускаю код, он не может найти библиотеку re.py, который фактически находится в папке Lib Python. Поэтому я добавил sys.path.append('C:\Python\Lib'), и теперь он может его найти.

Но теперь я получаю синтаксическую ошибку из этой библиотеки, где я говорю import re, что строки выдают ошибку относительно какой-то строки в re.py библиотека. Если я импортирую getopt, я также получаю синтаксическую ошибку в некоторой строке.

Как это вообще возможно? Синтаксическая ошибка в pythons Lib файлах, которые пришли с установкой?

И дело в том, что на машине 1 он работает, то же самое содержимое файла, та же python версия. У меня сложилось впечатление, что я ошибся в версии python.exe для этой версии библиотек, но я просто скачал Windows установщик и установил его.

Я даже не знаю, что искать в Google, делает у кого-нибудь есть идеи? Я импортирую re в WeblogicAuto.py в строке 5.

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

Ответы [ 2 ]

2 голосов
/ 10 января 2020

ОК, большое спасибо всем, я нашел решение, оно было о библиотеках Jython. Я попытаюсь уточнить, если кто-то наткнется на эту проблему.

Я делаю здесь, чтобы развернуть java модули на Oracle Weblogi c сервере приложений. Таким образом, этот ответ также поможет кому-то, пытающемуся выполнить развертывание в Weblogi c с python.

. С самого начала я избегал устанавливать программное обеспечение Webloglogi c на машину, с которой я выполняю развертывание (и это раб Дженкинса, который запускает эти python файлы, простая работа). Я заметил, что на первой машине (первой рабыне Дженкинса) установлен Weblogi c, но я хотел бы сохранить его минимальным:)

Что вам нужно, так это weblogi c .jar и (не уверен в данный момент ) wlfullclient.jar, который генерируется на сервере Weblogi c (Google, если нужно, или, возможно, он у вас уже есть).

Дело в том, что, хотя у меня есть чистый код python, когда вы вызываете другой python код с java weblogi c .WLST pythonCode.py , он будет запущен с приложением jython! И ему нужны его библиотеки по пути sys.

В файле jython я добавил print (sys.path), а затем запустил на обеих машинах (ведомых). Я заметил, что путь на этих машинах отличается, даже если вы введете его в командной строке, вы получите то же самое, но другое, чем при запуске Jenkins.

Поэтому вместо того, чтобы искать, как исправить эти пути и скопируйте файлы в них, я создал папки, в которых он ожидает их, и скопировал их с первого компьютера (легко исправить, я могу изучить это позже).

Это 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 - это файл, поэтому / Lib должен быть из этого файла, если я узнаю, как работает java.

Не стесняйтесь связаться со мной для получения более подробной информации.

2 голосов
/ 09 января 2020

Вы используете WLST (WebLogi c Scripting Tool).

WLST очень специфичен c распределение python:

  • это jython
  • примерно соответствует python 2.7

И вы пытаетесь импортировать библиотеки из вашего CPython 3.6.5 дистрибутива.

Вам необходимо:

  • удалить свои sys.path.append, которые вы добавили ранее
  • проверить python библиотеки в пути к библиотекам jython. Это может быть $HOME/.jython или WLST-специфицированный c путь (см. Документацию WebLogi c)
...