首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成“无模块命名: vmtk.custom”错误的VMTK自定义脚本

生成“无模块命名: vmtk.custom”错误的VMTK自定义脚本
EN

Stack Overflow用户
提问于 2020-07-22 23:14:40
回答 1查看 354关注 0票数 0

我正在使用一个名为VMTK的模块来构建分析血管模型的脚本。他们有编写这些脚本的教程。,因此系统可以很容易地识别它们,从而允许您将脚本连接到一起称为PypeS。我完全按照所示的方式学习了教程,并得到了相同的"No模块名: vmtk.name_of_script“错误。

我试过的是:

  • 将脚本放在与模块提供的所有预加载脚本相同的目录中,以便__init__.py能够捕获它
  • 将代码从网站复制到我的编辑器中,所以我确信我所写的内容没有错误。
  • 将问题直接提交给论坛,是为了回答有关VMTK的问题,但在过去一周半没有任何答复。
  • 将Python解释器更改为VMTK目录中的解释器

本教程说,您可以将自定义脚本放在文件系统的任何位置,但无论如何都会出现问题。我目前正在通过Anaconda使用Python3.6.10,并在MacOS High上安装VMTK (而不是从源代码构建)。

我真的不想要从源代码构建,因为我只需要预加载脚本和编写新脚本的能力,而不是使用构建脚本的C++文件。我被困了这么久,根本不知道是什么问题。我发现最接近这个问题的是一个解决这个问题的问题,但OP只是说问题已经解决了,没有提供其他信息。

下面是前面提到的代码:

代码语言:javascript
复制
#!/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中执行最基本的操作的地方。有什么想法吗?

编辑:这是确切的错误:

代码语言:javascript
复制
$ ./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'

我想追溯这个问题,但我不认为编辑任何预加载的文件是必要的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-29 02:50:36

经过一周的尝试和探索,我找到了一个解决方案:

  1. git clone vmtk回购安装到您的计算机上,并按照关于如何从源代码构建vmtk回购VMTK下载说明进行操作。这绝对会让人感到头疼,而且是一个漫长的过程,等着吧。
代码语言:javascript
复制
- If you don't have cmake installed on your computer, they offer a GUI version on their website. I'm not sure how it would work for Windows, but it definitely works for Mac.
  1. 构建完它之后,确保您从该文件所在的路径设置了source vmtk_env.sh的每个VMTK终端实例。这将允许您使用VMTK环境。
  2. 编写自定义脚本后,确保遵循教程中的所有说明(假设这是第一次),确保将其保存在构建文件夹中的“site”文件夹中。对我来说这条路是"vmtk-build/lib/python-2.7/site-packages/vmtk/".我目前希望更新它正在使用的Python版本,但这不是重点。
  3. 一旦完成,从终端导航到该文件夹并运行chmod u+x name_of_script.py (如果您是在基于Unix的操作系统中)。这将允许您使用./name_of_script.py执行该文件。
  4. 我相信这是由于Python正在使用的版本,但是我出现了两个“没有模块命名”错误,每个错误都是单独的:一个用于tkinter,另一个用于joblib
代码语言:javascript
复制
- The `tkinter` issue is one that can be resolved by going into the file where the import is, I believe `vmtkscripts.py`, and changing all instances of `tkinter` to `Tkinter` (capital T). This is because they changed the name of the module from Python 2 to 3, so in newer versions of Python it would be `tkinter`. That fixed the first error.
代码语言:javascript
复制
- When I attempted to fix the `joblib` issue, I saw that the other version of Python available on my system already had it, thus I couldn't install it through pip. Instead, you can do `python-2.7 -m pip install joblib` to install it for a specific version of Python. Although I did uninstall `joblib` as a whole from my computer before doing that.

一切都会好起来的。下一次我尝试运行我的脚本时,它运行时没有任何错误。

额外:我没有为此使用任何Anaconda环境。可能会回去试着安排,但我很高兴我已经开始工作了。此外,我还从我的计算机中删除了VMTK的二进制安装。如果你只想从源头构建它,就不需要把它放在身边。通过运行source vmtk_env.sh命令,可以在设置vmtk后通过终端运行VMTK。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63044473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档