Передача переменной пути из powershell x86 в python не работает - PullRequest
1 голос
/ 31 января 2020

Я обычно запускаю сценарий python, используя Windows PowerShell. Недавно я внес изменения в код, и теперь он, похоже, не работает. Чтобы уточнить, есть проблема с переменной 'root_dir_path', передаваемой из powershell в python.

В powershell я запускаю следующее, которое должно определить переменную пути 'root_dir_path':

PS Z:\> C:\Hyapp\FIJI-W~1.52P\Fiji.app\ImageJ-win64.exe --ij2 --headless -- 
console --run D:\Cabut- 
PWP1-preliminary-data\All\great_grandpa\stitcher-GREAT-grandpa-pro-2.0.py 
"root_dir_path='D:\Cabut- 
PWP1-preliminary-data\All\Stitching'"

Может, кто-нибудь подскажет, почему это впоследствии не работает?

В частности, выдает следующую ошибку:

    NameError: name 'root_dir_path' is not defined

И рассматриваемая строка (361) - это когда я пытаюсь для вызова функции main ():

main(root_dir_path)

В powershell я получаю следующее:

PS Z:\> C:\Hyapp\FIJI-W~1.52P\Fiji.app\ImageJ-win64.exe --ij2 --headless --console --run D:\Cabut- 
PWP1-preliminary-data\All\great_grandpa\stitcher-GREAT-grandpa-pro-2.0.py "root_dir_path='D:\Cabut- 
PWP1-preliminary-data\All\Stitching'"
PS Z:\> Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed 
in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be 
removed in a future release
tammikuuta 31, 2020 5:21:04 IP. java.util.prefs.WindowsPreferences <init>
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows 
RegCreateKeyEx(...) returned error code 5.
[WARNING] Unmatched input: root_dir_path
[ERROR] Traceback (most recent call last):
File "D:\Cabut-PWP1-preliminary-data\All\great_grandpa\stitcher-GREAT-grandpa-pro-2.0.py", line 362, 
in <module>
main(root_dir_path)
NameError: name 'root_dir_path' is not defined

    at org.python.core.Py.NameError(Py.java:290)
    at org.python.core.PyFrame.getname(PyFrame.java:257)
    at org.python.pycode._pyx0.f$0(D:\Cabut-PWP1-preliminary-data\All\great_grandpa\stitcher-GREAT-grandpa-pro-2.0.py:362)
    at org.python.pycode._pyx0.call_function(D:\Cabut-PWP1-preliminary-data\All\great_grandpa\stitcher-GREAT-grandpa-pro-2.0.py)
    at org.python.core.PyTableCode.call(PyTableCode.java:171)
    at org.python.core.PyCode.call(PyCode.java:18)
    at org.python.core.Py.runCode(Py.java:1614)
    at org.python.core.__builtin__.eval(__builtin__.java:497)
    at org.python.core.__builtin__.eval(__builtin__.java:501)
    at org.python.util.PythonInterpreter.eval(PythonInterpreter.java:259)
    at org.python.jsr223.PyScriptEngine.eval(PyScriptEngine.java:57)
    at org.python.jsr223.PyScriptEngine.eval(PyScriptEngine.java:31)
    at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)
    at org.scijava.script.ScriptModule.run(ScriptModule.java:160)
    at org.scijava.module.ModuleRunner.run(ModuleRunner.java:168)
    at org.scijava.module.ModuleRunner.call(ModuleRunner.java:127)
    at org.scijava.module.ModuleRunner.call(ModuleRunner.java:66)
    at org.scijava.thread.DefaultThreadService.lambda$wrap$2(DefaultThreadService.java:228)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

1 Ответ

0 голосов
/ 05 февраля 2020

Я наконец понял.

Вызов для главной функции в скрипте python также содержал следующую строку выше:

#@String root_dir_path
main(root_dir_path)

Этот #@String root_dir_path, казалось, был необходимо, чтобы переменная правильно передавалась из powershell. Когда я автоматически переформатировал в pycharm, был добавлен пробел, так как он думал, что эта строка была простым комментарием:

# @String root_dir_path

Это, похоже, вызвало ошибку. Избавление от пространства позволило ему снова работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...