我正在使用一个名为VMTK的模块来构建用于分析血管模型的脚本They have a tutorial for writing these scripts因此它们很容易被系统识别,允许您将脚本管道连接在一起,称为PypeS。我完全按照教程进行了,如图所示,最后出现了相同的“没有名为:vmtk.name_of_script的模块”错误
我所尝试的:
__init__.py
可以捕获它本教程说,您可以将自定义脚本放在文件系统中的任何位置,但无论如何都会出现问题。我目前通过Anaconda使用Python3.6.10,并在MacOS High Sierra上二进制安装VMTK(而不是从源代码构建)
<>我真的不想从源建立,因为我只需要预加载的脚本和编写新脚本的能力,而不是使用脚本构建的C++文件。我被困了这么久,根本不知道问题出在哪里。我发现的最接近的问题是解决这个问题的SO问题,但OP只是说问题已经解决,没有提供其他信息以下是上述代码:
#!/usr/bin/env python
import sys
from vmtk import pypes
from vmtk import vmtkscripts
customscript = 'customScript'
class customScript(pypes.pypeScript):
def __init__(self):
pypes.pypeScript.__init__(self)
def Execute(self):
pass
if __name__=='__main__':
main = pypes.pypeMain()
main.Arguments = sys.argv
main.Execute()
根据教程,我还运行了chmod u+x customscript.py
来更改文件的权限,以便执行它。我被困在脚本应该在VMTK中执行最基本操作的位置。有什么想法吗
编辑:下面是确切的错误:
$ ./customscript.py
No module named 'vmtk.customscript'
Traceback (most recent call last):
File "/vmtk/lib/python3.6/site-packages/vmtk/pype.py", line 290, in Execute
module = importlib.import_module('vmtk.'+scriptName)
File "/vmtk/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 978, in _gcd_import
File "<frozen importlib._bootstrap>", line 961, in _find_and_load
File "<frozen importlib._bootstrap>", line 948, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'vmtk.customscript'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "./customscript.py", line 21, in <module>
main.Execute()
File "/vmtk/lib/python3.6/site-packages/vmtk/pypescript.py", line 688, in Execute
pipe.Execute()
File "/vmtk/lib/python3.6/site-packages/vmtk/pype.py", line 298, in Execute
self.PrintError(str(e))
File "/vmtk/lib/python3.6/site-packages/vmtk/pype.py", line 102, in PrintError
raise RuntimeError(errorMessage)
RuntimeError: No module named 'vmtk.customscript'
我想追溯这个问题,但我不认为编辑任何预加载的文件是必要的
经过一周的尝试和搜索,我找到了以下解决方案:
git clone
将vmtk repo安装到您的计算机上,并按照VMTK download说明如何从源代码构建它。这绝对会让人感到头痛,而且是一个漫长的过程;就等着吧构建完成后,请确保从文件所在的路径设置的每个VMTK终端实例
source vmtk_env.sh
。这将允许您使用VMTK环境编写自定义脚本后,请确保遵循教程中的所有说明(假设这是第一次),确保将其保存在build文件夹中的“site packages”文件夹中。我的路径是“vmtk build/lib/python-2.7/site packages/vmtk/”。我目前正在寻找更新它使用的Python版本,但这不是重点
完成后,从终端导航到该文件夹并运行
chmod u+x name_of_script.py
(如果您在基于Unix的操作系统中)。这将允许您使用./name_of_script.py
执行文件我相信这是由于PythonVMTK正在使用的版本,但是我出现了两个“No module named”错误,每个错误都是在不同的时间出现的:一个用于
tkinter
,另一个用于joblib
tkinter
问题可以通过进入导入所在的文件来解决,我相信vmtkscripts.py
,并将tkinter
的所有实例更改为Tkinter
(大写T)。这是因为他们将模块的名称从Python2更改为3,因此在较新版本的Python中,它将是tkinter
。这修正了第一个错误当我试图修复
joblib
问题时,我发现我系统上可用的Python的另一个版本已经有了它,因此我无法通过pip安装它。相反,您可以执行python-2.7 -m pip install joblib
来为特定版本的Python安装它。尽管我在做这件事之前确实从我的计算机上卸载了joblib
这应该可以解决一切问题。下次我尝试运行脚本时,它运行时没有任何错误
额外:我没有使用任何Python环境。可能会回去试着设置,但我很高兴我能成功。此外,我还从计算机上删除了VMTK的二进制安装。如果您只是想从源代码构建它,则无需保留它。通过运行
vmtk
命令设置source vmtk_env.sh
后,可以通过终端运行VMTK相关问题 更多 >
编程相关推荐