JMP 14 Python 能力 - 有效吗? 我很困惑我正在尝试使用 JMP 14 中的新功能来运行 python,但它不起作用。基本上找不到我的 python 安装,我认为虽然在某些情况下它只是崩溃了。
我看见另一种讨论说 14.1 中存在问题,并建议设置环境变量和使用的解决方法使用Python版本(“3.6”)作为一个论点Python 初始化() (这两种方法我都尝试过,但均未成功)。
然后我在 14.2 的发行说明中看到了更多相关内容,包括相关环境变量的不同名称......
https://www.jmp.com/support/help/14-2/how-jmp-finds-python-on-windows.shtml
所以,我从 14.1 升级,看到现在有 14.3,然后就明白了。当我尝试 14.2 帖子中的环境变量指令时,我收到一条消息,指出该指令已被弃用,现在它应该是 JMP_PYTHON_MODULE_PATH。所以我尝试了一下,我思考具有正确文件的有效路径,使用 14.2 帖子中的相同格式,但仍然无法正常工作。我也想到在 JMP15 早期采用者版本中尝试此操作,并得到相同的结果和相同的消息,即环境变量应称为 JMP_PYTHON_MODULE_PATH。
在所有情况下(14.1、14.3、15 早期采用者、环境变量的各种版本),如果我在 Python Init() 中没有参数,JMP 会立即在那一行崩溃。如果我在那里有 UsePythonVersion("3.6") ,它会返回一个错误,说它根本找不到 Python 。
在此系统上找不到 Python 安装。 JMP Python 支持需要 Python 3.0 或更高版本。在访问或评估 'Python Init' 时,Python Init/*###*/(Use Python Version( "3.6" ))
有人使用这个成功吗?如果是这样,你是否在 Python Init() 中添加了一些东西?
或者,如果您使用设置环境变量,它的名称是什么?它是什么样子?还有进一步的故障排除建议吗?
这是我对环境变量的最新尝试......这不是正确的格式吗? (之前的帖子看起来环境变量有大括号和双引号,就像 JMP 希望看到的那样是 JSL 列表格式,但这看起来像 4.2 帖子所说的那样,其他格式也不适合我......确实是一个 python36.dll 文件做好像就在这个位置...
不确定我是否遇到了特定于我的系统的怪异问题,需要技术支持,或者我是否只是没有获得其工作原理的最新版本。
回复:JMP 14 Python 功能 - 有效吗? 我很困惑使用环境变量从来都不是首选途径。 Python Init() 或 Python Connect() 的 JSL 脚本参数始终“应该”是确定值。 所有参数都是可选的,但指定 python3x.dll 的路径并作为添加 sys.path 的最后手段应完全指定 Python。 自 JMP 14 以来,Python 集成显着改进了 Python 检测。 此时,使用环境变量可能会适得其反,因此不应使用(除非您有时间摆弄旋钮并且其他所有方法都失败了,否则它是备用代码路径)。 在 JMP 16.1 及更高版本中,JSL 脚本参数“应该”覆盖其他任何内容...
回复:JMP 14 Python 功能 - 有效吗? 我很困惑我知道这有点晚了,但这个主题需要针对较新版本的 JMP 和 Anaconda 进行编辑和更新。请注意,我于 2021 年 8 月 24 日成功将 python 3.8 与 JMP 16 集成。
与此线程中发布的“解决方案”直接矛盾,请勿更改任何环境变量。
做。
不是。
这个“解决方案”导致我几周的集成和开发都失败了。安装 JMP 或更新 JMP 后,您应该安装新版本的 Anaconda(可以使用 Anaconda Navigator),并确保 Anaconda 中的基础(根)环境至少为 3.8.3。我也在3.8.8上测试成功。
您可以通过执行以下操作来验证路径和安装:
- 导航到 C:\Program Files\SAS\JMP\\(如果您在此处没有看到它,请检查:C:\Program Files (x86)\SAS\JMP\\)
- 双击InstallChecker.exe(它可能只是说Install Checker)
- 显示报告后,选择“在浏览器中打开”
然后您应该会看到一个 XML 文件,最后您应该会看到以下内容:
-<类别名称=“Python集成”>
"/>
"/>
"/>
"/>
"/>
就我而言,在将环境变量更改为以下内容后,集成成功:
"/>
"/>
我希望这会有所帮助,并且我强烈建议删除此线程上的解决方案,因为它根本不起作用。
回复:JMP 14 Python 功能 - 有效吗? 我很困惑JMP 15.0 仍然遇到同样的问题。 我在没有 PATH 选项的情况下安装了链接的 Anaconda,并且它有效。
请注意,这个包相当旧,因此您需要 conda 更新您的包,小心不要去更新 Python 本身 3.6.5(3.6.9 对我来说不起作用)。
我希望它在下一个版本中得到修复。
@FN写道:
我可以确认,在 Windows 10 和 JMP 14.2 中,它可以开箱即用,如果:
Anaconda Python 3.6* 64位已安装> https://repo.continuum.io/archive/Anaconda3-5.2.0-Windows-x86_64.exe ;
并且 PATH 选项已激活(无需管理员权限)

我的观点更多的是关于使用可移植的 Python 版本部署插件的能力,因此用户无需为 Anaconda 安装、环境和版本控制而烦恼。
谢谢您的帮助。 期待在接下来的更新中看到出色的 Python 集成。
(*) 对于当前版本的 Anaconda,JMP 使用此配置会崩溃。
回复:JMP 14 Python 功能 - 有效吗? 我很困惑关于部署,我认为只要Python不干扰其他用户安装就可以了。
例如,我尝试从位于一个特定文件夹中的 JMP 15 EA8 调用 Python。
该文件夹包含Anaconda/miniconda的所有安装文件,我在卸载之前将其复制到一个文件夹中。 该代码在安装时有效。 现在,JMP 似乎不使用我指定的路径。
Set Environment Variable( "JMP_PYTHON_MODULE_PATH",
"\["", "C:/Users/xxx/JMP_scripting/python/miniconda3/python36.zip",
"C:/Users/xxx/JMP_scripting/python/miniconda3/DLLs",
"C:/Users/xxx/JMP_scripting/python/miniconda3/lib",
"C:/Users/xxx/JMP_scripting/python/miniconda3",
"C:/Users/xxx/JMP_scripting/python/miniconda3/lib/site-packages",
"C:/Users/xxx/JMP_scripting/python/miniconda3/lib/site-packages/win32",
"C:/Users/xxx/JMP_scripting/python/miniconda3/lib/site-packages/win32/lib",
"C:/Users/xxx/JMP_scripting/python/miniconda3/lib/site-packages/Pythonwin"]\"
);
Python Init (Path("C:\Users\xxx\JMP_scripting\python\miniconda3"),
Init Trace("TRUE"),
Debug Print Statements ("TRUE"),
Debug Print Output("TRUE") );
Python Submit( "\[basket = ["apple", "orange", "pear"]
print(basket)]\" );
Python Term();
JMP 15 EA8 中的错误

JMP Pro 14.2 中的错误:
在此系统上找不到 Python 安装。 JMP Python 支持需要 Python 3.0 或更高版本。在访问或评估 'Python Init' 时,Python Init/*###*/(Path(
“C:\Users\xxx\JMP_scripting\python\miniconda3”
))
回复:JMP 14 Python 功能 - 有效吗? 我很困惑好的! 这是一个很好的用例。
当您寻找理想的 JMP + Python 工作流程时,值得注意的是,JMP (Pro) 可以为 JMP 模型生成 Python 评分代码。 这支持另一个方向的集成:将 JMP 功能推入 Python 世界。
例如,假设您想将 JMP 模型应用于 Oracle 中的大型数据表,您可以将该模型转换为 Python 并使用 UDF 在数据库中对其进行评分(尽管支持似乎是实验性的):
https://oracle.github.io/oracle-db-mle/python/
或者,您可以与 Python 同事共享您的 JMP 模型,以便她可以在 Jupyter 笔记本中运行该模型,等等。
此外,JMP 15.0 还可以更轻松地在数据可视化工具提示中将外部图像显示为缩略图。 这将减少/消除将它们直接导入 JMP 表的需要,从而使它们更小。 当然会有性能成本,但这可能是值得的权衡。 请留意这一点。
感谢分享! 让我们随时了解您的旅程!
回复:JMP 14 Python 功能 - 有效吗? 我很困惑这看起来很棒 - 谢谢!我至少几周没有时间测试它(并且我完全重新安装了我的Python安装,没有虚拟环境,所以需要一些努力来尝试这个),但我很快就会热衷于测试它。
真正让我开始使用Python的是使用tensorflow和keras对图像进行分类。我正在运行一个 JMP 脚本,该脚本查询相关图像并调用 python 来运行我的模型,然后将结果推送到 Oracle。整个任务我可能最终会在 Python 中完成,但我正在 JSL 中完成,因为到目前为止我在这方面更加熟练 - 只是在 Python 中学习 - 而且我已经有了运行 JSL 自动化作业的完整方案,具有用于将表推送到我们的 Oracle 等的函数。
然而,虽然我认为整个项目本质上不会与 JMP 相关,但我实际上发现,在 JMP 表中包含图像以及其他数据,可以通过所有常用的 JMP 方式与它们进行交互,这非常有用 - 排序、基于其他数据进行选择数据列等. 这促使我做了一些其他与图像相关的插件。还有待观察的是,我的项目最终是否确实需要在实时交互式 JMP 会话期间调用 Python,或者它们可以是单独的(一个交互式检查 tf 模型结果的工具,只是从 Oracle 查询结果,而不是直接调用Python 实时运行模型?)但我目前正在一起使用它们。
不管怎样,这就是我现在使用 Python 时不属于 JMP 的东西。 我正在尝试学习更多Python,并拥有这方面的专家同事,我觉得可能会发现更多我可能想真正调用Python以将其功能与JMP结合起来的东西。
谢谢!
回复:JMP 14 Python 功能 - 有效吗? 我很困惑你好呀@哈德纳,
很高兴知道您更多地使用 Python 和 JMP。 如果您能分享您一直在做的事情,我们很想知道!
关于对虚拟环境的支持,我听到了。 它确实在保持您的依赖项井井有条以及帮助您的同事重现您的环境以运行您的插件方面发挥了很大的作用。
这就是为什么我建立了一个小库来帮助解决这个问题。 请检查:
https://community.jmp.com/t5/JMP-Scripts/Anaconda-Environments-Integration/ta-p/221565
很多例子,在 14.3 和 15.1 中测试过。 但是,至少目前,仅限 Windows 且特定于 Anaconda。
请让我知道这对你有没有用!
回复:JMP 14 Python 功能 - 有效吗? 我很困惑你好!
只是回到这个线程作为OP说......
- 自从我发表最初的文章以来,我一直在更多地使用 Python,并且我所说的对我有用的方法仍然有效。:)
- 我很感谢为支持 Python 所做的努力,更重要的是现在我已经找到了可以使用它的具体用途。 谢谢!
- 像 FN 一样,我发现调用 Python 的共享插件有问题。 我确实分享了很多插件。我现在仅将其用于我自己以及我运行的作业,然后与其他人共享结果,但不在由其他人运行的脚本中使用。我必须给出有关安装 Python 和包的复杂说明,并担心特定版本协同工作(我使用的 R 也出现同样的问题,但在共享脚本中没有)。但如果某个特定版本封装在 JMP 中,就会限制我们可以用它做什么。仍然认为支持虚拟环境可能会有所帮助,然后我可以指导和支持用户按照我的规范为他们想要使用的特定工具设置安装,并且不会干扰他们计算机上的任何其他 Python 活动。但不太确定什么是最好的,也不太热衷于解决用户 Python 安装的问题。因此,只是同意这并不理想,并指出我确实有兴趣更多地利用这种能力。
谢谢!
回复:JMP 14 Python 功能 - 有效吗? 我很困惑我可以确认,在 Windows 10 和 JMP 14.2 中,它可以开箱即用,如果:
Anaconda Python 3.6* 64位已安装> https://repo.continuum.io/archive/Anaconda3-5.2.0-Windows-x86_64.exe ;
并且 PATH 选项已激活(无需管理员权限)

我的观点更多的是关于使用可移植的 Python 版本部署插件的能力,因此用户无需为 Anaconda 安装、环境和版本控制而烦恼。
谢谢您的帮助。 期待在接下来的更新中看到出色的 Python 集成。
(*) 对于当前版本的 Anaconda,JMP 使用此配置会崩溃。
回复:JMP 14 Python 功能 - 有效吗? 我很困惑我不确定我是否理解你的问题。 为所有用户安装Python确实需要管理员访问权限,但使用已安装的Python不需要管理员访问权限。 名为 Python 的 JMP 插件不需要管理员访问权限即可安装或运行。 是的,为所有用户安装的附加 Python 包将需要管理员访问权限。 您应该能够为每个用户安装站点本地软件包,而不需要管理员安装。 这是我一直想测试的东西,但有机会尝试一下。 它可能需要您更新 sys.path 以添加站点本地包的位置。
至于 JMP 15 文档,我知道其中的一些讨论已经包含在内。 不幸的是,在截止日期之前,并不是所有内容都已成为文档。 我们将努力通过维护版本来获取其余部分。
回复:JMP 14 Python 功能 - 有效吗? 我很困惑为所有用户安装还需要管理员权限,这在分发调用 Python 的加载项时并不方便。
JMP 15 的文档是否包含此处讨论的内容?
回复:JMP 14 Python 功能 - 有效吗? 我很困惑我们能够在开发计算机上复制尝试加载 Python 3.7 时 JMP 突然退出的情况。事实证明,我们 (JMP) 并不是唯一遇到 Python 3.7 和 Python 3.8 问题的人,尤其是在嵌入式情况下。我们从 Python 得到的错误是:
Python 致命错误:无法加载文件系统编解码器
Jmp.exe 中 0x00007FFE84F9B64E (ucrtbase.dll) 处出现未处理的异常:请求致命程序退出。
这目前的解决方案是使用 Python 3.6.5 或更新的 3.6.x,或者您必须在 Windows 上安装 Python 3.7.x 作为所有用户的安装,而不仅仅是您本地用户,并且您必须选择将PATH 中的 Python。这直接与 Anaconda3 的安装对话框相矛盾,警告不要将其放入路径中。
我的开发机器在系统范围内安装的 3.7.1 上运行良好,并且是路径上的默认 Python。在我同事的机器上,我们能够复制 JMP 的突然中止,我们使用默认安装选项安装了 Python 3.7.1,这使得本地安装不在路径上。我们能够通过设置环境变量 PYTHONHOME= 'anaconda3 目录' 来阻止 JMP 退出,但即使在这里,我们也无法让它加载 numpy、scipi、pandas 或 sqlite3,甚至从控制台提示符也是如此。 在我的机器上一切都按预期工作。
回复:JMP 14 Python 功能 - 有效吗? 我很困惑有关 UsePythonVersion("3.6") 的更多信息,以防万一它有用......
首次打开 JMP 时,此行不起作用...
Python Init(使用 Python 版本( "3.6" ), InitTrace( "True" ));
这是 InitTrace() 中日志显示的内容...
处理 OpPythonInit 运算符
启动 JMP 到 Python 接口初始化
查询HKEY_CURRENT_USER
读取 hKey=0XFFFFFFFF80000001 kname=SOFTWARE\Python\PythonCore 位=64
找到 hKey=0xFFFFFFFF80000001 kname=SOFTWARE\Python\PythonCore 位=64
子项数=1
正在检索子项#=0
子密钥=3.6 长度=3
打开子项=3.6
打开键=3.6 子键=InstallPath
查询值 key=3.6 subkey=InstallPath
查询值 key=3.6 subkey=InstallPath value=C:\Users\12470\AppData\Local\Continuum\anaconda3
打开键=3.6 子键=PythonPath
查询值 key=3.6 subkey=PythonPath
构建 Python DLL version=3.6 的路径
在此系统上找不到 Python 安装。 JMP Python 支持需要 Python 3.0 或更高版本。在访问或评估 'Python Init' 时,Python Init/*###*/(Use Python Version( "3.6" ), InitTrace( "True" ))
如果我一遍又一遍地运行该行,这种情况会反复发生,但如果我在没有 UsePythonVersion 的情况下执行此版本...
Python Init(InitTrace( "True" ));
它不仅可以工作,而且在该 JMP 会话打开时,带有 UsePythonVersion("3.6") 参数的原始版本也开始工作。以下是在这种情况下该初始化跟踪中日志显示的内容。在这两种情况下,显示的路径在我看来都是相同且正确的......
查询HKEY_CURRENT_USER
读取 hKey=0XFFFFFFFF80000001 kname=SOFTWARE\Python\PythonCore 位=64
找到 hKey=0xFFFFFFFF80000001 kname=SOFTWARE\Python\PythonCore 位=64
子项数=1
正在检索子项#=0
子密钥=3.6 长度=3
打开子项=3.6
打开键=3.6 子键=InstallPath
查询值 key=3.6 subkey=InstallPath
查询值 key=3.6 subkey=InstallPath value=C:\Users\12470\AppData\Local\Continuum\anaconda3
打开键=3.6 子键=PythonPath
查询值 key=3.6 subkey=PythonPath
构建 Python DLL version=3.6 的路径
Python DLL 路径=C:\Users\12470\AppData\Local\Continuum\anaconda3\python36.dll
sys.pathentry.jstr:C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3\\Lib
sys.pathentry.jstr:C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3\\DLLs
前:
/*********/
打印(_JMPsys.路径)
/*********/
['C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3\\python36.zip', 'C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3 \\Lib', 'C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3\\DLLs', 'C:\\Program Files\\SAS\\JMP\\14', ' C:\\ Users \\ 12470 \\ AppData \\ Local \\ Continuum \\ anaconda3','C:\\ Users \\ 12470 \\ AppData \\ Local \\ Continuum \\ anaconda3 \\ lib \\ site-包','C:\\ Users \\ 12470 \\ AppData \\ Local \\ Continuum \\ anaconda3 \\ lib \\ site-packages \\ Babel-2.5.0-py3.6.egg','C: \\Users\\12470\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\win32','C:\\Users\\12470\\AppData\\Local\\Continuum\ \anaconda3\\lib\\site-packages\\win32\\lib','C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\Pythonwin ']
后:
/*********/
打印(_JMPsys.路径)
/*********/
['', 'C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3\\python36.zip', 'C:\\Users\\12470\\AppData\\Local\\Continuum \\anaconda3\\Lib','C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3\\DLLs','C:\\Users\\12470\\AppData\\Local\ \Continuum\\anaconda3','C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages','C:\\Users\\12470\\AppData \\Local\\Continuum\\anaconda3\\lib\\site-packages\\win32','C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-包\\ win32 \\ lib','C:\\ Users \\ 12470 \\ AppData \\ Local \\ Continuum \\ anaconda3 \\ lib \\ site-packages \\ Pythonwin']
回复:JMP 14 Python 功能 - 有效吗? 我很困惑在职的!
这对我有用:
我使用适用于 Python 3.6 的存档版本重新安装了 Anaconda(以避免使用 3.6 的虚拟环境)。这是它的安装位置,与之前相同,只是在 anaconda3 文件夹下多了 2 层虚拟环境):
C:\Users\12470\AppData\Local\Continuum\anaconda3\python36.dll
将环境变量 JMP_PYTHON_MODULE_PATH 设置为上述 python36.dll 的路径
在 python init() 中没有使用 UsePythonVersion("3.6") 参数,这会出现“找不到安装”错误。
到目前为止,重新安装后我所做的任何尝试都没有导致崩溃。诚然,没有做太多事情,但似乎是虚拟环境的问题导致了崩溃(?)。到目前为止,我所做的有限测试在 14.3 和 15EA 中都有效。
谢谢!
回复:JMP 14 Python 功能 - 有效吗? 我很困惑@保罗·尼尔森& @杰夫·珀金森,
将 JMP 更新到 14.3,可以确认崩溃仍然继续。 如果您需要任何进一步的信息,请告诉我。
回复:JMP 14 Python 功能 - 有效吗? 我很困惑您应该做的第一件事就是更新到 JMP 14 的新版本。 如果原始 14.0.0 能够自动检测正确的 Python 安装,则可以正常工作。 但是,如果它无法正确定位 Python,那么其他方法都无法正常工作。 连续更新 14.1、14.2… 中的工作使其他替代方案工作得更好,检查环境变量、Python Init() 变量的使用。 它可能仍然无法在您的特定环境中工作,但这是第一个开始的地方。
您应该继续与 JMP 的技术支持合作。 通过技术支持,所有 JMP 客户都可以从我们在这个问题上的解决方案中受益。 目前,需要对代码进行更多的挖掘,对代码进行一些额外的检测,并对代码进行一些额外的防弹检查,甚至可能需要编写测试或诊断程序。
谢谢你的耐心。
保罗
回复:JMP 14 Python 功能 - 有效吗? 我很困惑值得一提的是,我的肯定都是 64 位的,而且我也遇到了崩溃的情况。我的唯一一次在 Python Init() 上不会崩溃是当我收到“找不到”消息时使用 Use Python Version() 参数。回复:JMP 14 Python 功能 - 有效吗? 我很困惑@哈德纳和@保罗·尼尔森,
保罗,我同意@哈德纳的观察。 可以要求您在明天或下周与我们一起进行 Webex,无论哪种方式对您有效,您可以在其中查看我们的安装并告诉我们为什么它不起作用? 然后,您可以根据我们从会议中获得的经验教训在社区上发布新的博客文章吗? 这是你能做的事吗?
回复:JMP 14 Python 功能 - 有效吗? 我很困惑值得一提的是,我的肯定都是 64 位的,而且我也遇到了崩溃的情况。我的唯一一次在 Python Init() 上不会崩溃是当我收到“找不到”消息时使用 Use Python Version() 参数。
回复:JMP 14 Python 功能 - 有效吗? 我很困惑我还会更新到 JMP 14 的最新版本。 JMP 14.x 的每个版本都完成了额外的工作,以改进查找 Python 并正确加载它。回复:JMP 14 Python 功能 - 有效吗? 我很困惑我希望出现不匹配,你的问题就会突然得到解决。
我刚刚添加了额外的代码来在我们尝试加载 Python 时捕获异常。 我还将考虑添加代码,以便 Init Trace(“TRUE”) 写入文件和日志,以便我们可以获得 Python 初始化的执行路径的一些跟踪。 希望两者都应该出现在下一个 JMP 15 EA 中。 (不确定下一份何时到期)。
保罗
回复:JMP 14 Python 功能 - 有效吗? 我很困惑@保罗·尼尔森,
的确。 我已检查并验证 JMP 和 Python 都是 64 位。


回复:JMP 14 Python 功能 - 有效吗? 我很困惑您是否已验证您的 Python 和 JMP 是否具有相同的位数? 32 位或 64 位。 缺少转储文件表明 JMP 在尝试将 Python 作为共享库加载时可能会出现故障。 如果 32 位 JMP / 64 位 Python 或 64 位 JMP / 32 位 Python 不匹配,则很可能会崩溃。
这是 JMP 在尝试加载之前应该尝试验证的内容,也是我们应该尝试捕获的内容,但它可能仍然是无法恢复的情况。 但如果 JMP 能发出一些通知就更好了。
保罗
回复:JMP 14 Python 功能 - 有效吗? 我很困惑@保罗·尼尔森,
我正在与技术支持人员联系解决此问题 - SAS 7612709398。
我尝试按照您的建议包含跟踪,但导致 Jmp 崩溃。 但是,我没有看到生成的 .dmp 文件或 .jer 文件可以提供给技术支持。
回复:JMP 14 Python 功能 - 有效吗? 我很困惑支持 python 虚拟环境是我们正在考虑的事情。
反面是这个问题:
支持各种用户安装的 Python 版本是否太难运行并保持运行?
如果是这样,解决方案可能是 JMP 提供并安装的 Python 版本,该版本经过测试并且已知可以毫无问题地与 JMP 配合使用。 带来的问题包括支持本地包的安装以及扩展到 JMP 提供的 Python 环境中。
目前,我们更愿意支持用户安装的 Python,但由于您已经体验过各种实际情况,这可能会成为一项挑战。
谢谢,
保罗
回复:JMP 14 Python 功能 - 有效吗? 我很困惑感谢这一切。
很确定您提到的问题是“JMP 目前不支持虚拟环境”。
安装了最新的 Anaconda 和 python 3.7 后,发现我想使用需要 3.6 的 TensorFlow,我执行了此处描述的第一个选项...设置了 python3.6 环境。
https://docs.anaconda.com/anaconda/user-guide/faq/#anaconda-faq-35
鉴于我刚刚开始使用 python,并且对 3.7 没有特殊需求 - 据我所知 - 我想我可能会卸载所有它并从另一个选项开始,例如带有 3.6 的存档 Anaconda 安装包。 我看看情况如何。
但似乎这种“不同的东西需要不同的版本”很常见,就像 R 一样 - 阅读这种情况让我深入研究那个看起来更复杂的选项,上面的链接并不是唯一的我看到使用虚拟环境的建议。所以想知道您是否可以更多地谈论能够告诉它在特定虚拟环境中运行的计划。
InitTrace("TRUE") 的事情让我的 JMP 崩溃了。但如果我的路径没有涉及虚拟环境,情况可能会有所不同。 将解决这个问题并打开技术支持案例以获得进一步的帮助。谢谢!
回复:JMP 14 Python 功能 - 有效吗? 我很困惑我知道这对我们和你来说都一样令人沮丧。 我们很难在我们的机器上复制这个问题,但我们确实知道有些客户遇到了问题。 我们的大多数机器都是相似的,具有相同的企业形象...... 重要的一件事是,JMP 和 Python 的位数必须匹配。 由于 JMP 将 Python 作为共享库加载,因此您无法将不同位数的 JMP 和 Python 混合使用。 如果您有 32 位 JMP,则必须指向 32 位 Python 3.6.1 或更高版本。 如果您有 64 位 JMP,则它必须是 64 位 Python 3.6.1 或更高版本。 我们发现,如果您的系统上只安装了一次 Python,那么成功的机会最大。 在 JMP 14.1 中,如果系统上有多个 Python,它甚至不会尝试加载 Python。 JMP 目前不支持虚拟环境。
遇到问题的人请尝试以下选项Python 初始化()
Python 初始化(初始化跟踪(“TRUE”) );
此选项可能没有记录(抱歉),将导致 JMP 转储有关它认为 Python 所在位置的大量详细信息,包括它看到的路径和它发现的 Python 注册表项。 联系技术支持时请包含其输出。
您可以确定在您的环境中运行以下 Python 脚本的位数
导入结构体
print( struct.calcsize("P") *8)
这应该根据运行的 Python 的位数打印 32 或 64。
注意:JMP 14 可以是 32 位或 64 位,具体取决于版本。 收缩包装始终为 32 位
JMP 15 仅是 64 位。
我将尝试最完整地记录 Python Init() 和环境变量。
JMP 15 添加了 2 个正在寻找的新环境变量:
JMP_LIB_PYTHON_PATH - 这是共享库的完整路径。
JMP_PYTHON_MODULE_PATH - Python 的 sys.path 正如人们在 Windows 或 MacOS 环境变量中所期望的那样。 在 Windows 上是分号分隔的列表,在 MacOS 上是冒号分隔的列表,而不是 JSL 列表。
在我的机器上,我在 C:\ProgramData\Anaconda3 中安装了 Anaconda 3.7.1 64 位
那看起来像
JMP_LIB_PYTHON_PATH=C:\ProgramData\Anaconda3\python37.dll
dll 的路径应该足够......并且应该足以让 Python Init() 可以在没有参数的情况下使用。 指定 JMP_LIB_PYTHON_PATH 和 JMP_PYTHON_MODULE_PATH 后,即使使用多个 Python 解释器,也应该完全指定 Python,并且 Python Init() 应该可以正常工作。
正如所讨论的“Python sys path”一样环境变量已被弃用,因为它不遵循 Windows 或 MacOS 上 shell 环境变量的正常约定。 它的变量名称中包含空格,并且需要路径组件 { , } 的 JSL 列表,而不是 UNIX 上预期的冒号分隔路径或 Windows 上预期的分号分隔路径。
我们尝试更好地关注 Python 环境变量 PYTHONPATH 和 PYTHONHOME。 Python 文档中对这些变量的描述是:
Python之家
更改标准 Python 库的位置。 默认情况下,在以下位置搜索库
prefix/lib/pythonversion 和 exec_prefix/lib/pythonversion,其中 prefix 和 exec_prefix 是
依赖于安装的目录,均默认为 /usr/local。
当 PYTHONHOME 设置为单个目录时,其值会替换 prefix 和 exec_prefix。
要为它们指定不同的值,请将 PYTHONHOME 设置为 prefix:exec_prefix。
Python路径
增加模块文件的默认搜索路径。 格式与shell的相同
PATH:一个或多个由 os.pathsep 分隔的目录路径名(例如 Unix 上的冒号或
Windows 上的分号)。 不存在的目录将被默默忽略。
除了普通目录之外,各个 PYTHONPATH 条目还可能引用 zip 文件
包含纯Python模块(源代码或编译形式)。 扩展模块
无法从 zip 文件导入。
默认搜索路径取决于安装,但通常以 prefix/lib/pythonversion 开头
(参见上面的 PYTHONHOME)。 它始终附加到 PYTHONPATH。
如上所述,将在 PYTHONPATH 前面的搜索路径中插入一个附加目录
在界面选项下。 搜索路径可以在 Python 程序中作为变量 sys.path 进行操作。
JMP 15 查找环境变量的优先顺序:
环境变量和 JSL 脚本的优先级顺序从高到低
- 在 JSL 脚本中指定Python 初始化(小路(””) ,使用Python版本("") , Python 系统路径( { "",... } ), ... )
- 在系统/Shell 环境变量中指定
- 自动定位
- 注册表,在 PATH var 或系统 shell 上找到以运行 python 或 conda,...并且应该更喜欢本地安装的 Python
如果两者都存在,则在系统范围内安装 Python
JMP 14
首先查看环境变量“Python sys path”,它可以是 dll 的路径,也可以是表示为 JSL 列表 {"","",... } 的完整 sys.path
PYTHONINSTALLPATH = 包含 python 安装的顶级目录的路径,或包含 Python 共享库的目录。
这Python 初始化()陈述
参数:
Path() - dll 的完整路径,或包含 dll 的 Python 顶级目录。
使用 Python Version() - 主要.次要 Python 版本的带引号的字符串。 当发现多个 Python 时,它本身就足够了。
Python sys path() - 与 Python sys.path 值相对应的带引号的字符串路径的 JSL 列表。 指定这 3 个应该完全指定 Python 安装,并且应该覆盖任何环境或注册表值。
Init Trace("TRUE") - 在 JMP 的 Python 初始化期间调试输出到 JMP 的日志
调试打印语句(“TRUE”); - 直接将Python语句打印到JMP日志中
调试打印输出(“TRUE”); - 直接将Python输出打印到JMP日志
JMP 14 Python Init() 还可以选择接受以下内容: 仅使用一个或其他,并与 JMP 安装的位数相匹配。 32 位 JMP 无法使用 64 位 Python,64 位 JMP 无法使用 32 位 Python。
使用 32 位 Python(“TRUE”)
使用 64 位 Python(“TRUE”)
JMP 15 删除了上述可选参数,因为 JMP 15 是 64 位并且可以仅有的使用 64 位 Python。 所有参数为Python 初始化()是可选的,如果注册表中的自动检测或环境变量指向有效的Python,则无需进一步应该你需要的Python 初始化()
请随时联系 JMP 的技术支持,我们希望 JMP 中的 Python 功能有用并增强 JMP 提供的功能。 我们希望解决这些问题,使其正常运转。
保罗
回复:JMP 14 Python 功能 - 有效吗? 我很困惑下列的...
回复:JMP 14 Python 功能 - 有效吗? 我很困惑谢谢!会做。 我只能补充一点,我也尝试将 dll 的 path() 放入 python init() 中,这也会崩溃,而不是至少抱怨它找不到它。 总的来说,我可能也需要技术支持帮助,但希望有一些对其他人也有用的澄清。回复:JMP 14 Python 功能 - 有效吗? 我很困惑我可以确认,尽管在 C:\ 中安装了我的 anaconda 发行版并设置了环境变量,如邮政,我无法让它工作。 它仍然使 JMP 崩溃。 如果我得到技术支持的答复,我会更新您,如果您弄清楚了,请这样做
回复:JMP 14 Python 功能 - 有效吗? 我很困惑@哈德纳,
我和你在同一条船上。 我已经尝试为 Python 配置 JMP 大约两周了。 我已经成功地与 JMP 的 SAS 和 R 集成,但是 Python 集成一直很不清楚,至少可以说是冗长的。 我很失望地知道 JMP 15 早期采用者也没有任何改进来修复此集成。 我也密切关注这个邮政并希望它能在 JMP 15 中得到修复,并且集成将变得更加顺畅。
我目前正在使用 JMP 14 和 Python 3.7.1 。 有人建议我直接在 C:/ 根目录下安装 Python/Anaconda 发行版,我准备尝试一下。 如果可行,我会在此处提醒您哪些可行并进行更新。