abaqus python雖然是python,可是因爲涉及衆多類庫、配置、動態庫引用等緣由,沒法直接調用,而必須使用abaqus kernel才能運行。這就有點相似在pycharm中使用pyspark同樣。咱們知道,集成開發環境(IDE,Integrated Development Environment)只是一個方便寫代碼的殼子,其運行核心仍然是該語言的主編譯器和後續調用命令。例如Java在windows系統下必然有個java.exe可執行文件,而Python語言也會有一個python.exe。具體到abaqus python,這個就有點不同了,咱們直接運行安裝好的abaqus目錄下面的python.exe是沒辦法運行abaqus python代碼的,會發生以下錯誤:java
PS D:\SIMULIA\Abaqus\6.14-4\code\bin> .\python.exe ImportError: No module named site
進一步搜索咱們發現不只code文件夾下有個python.exe,在D:\SIMULIA\Abaqus\6.14-4\tools\SMApy\下還分別有一個python2.6和python2.7。python
PS D:\SIMULIA\Abaqus\6.14-4\tools\SMApy\python2.7> .\python.exe Python 2.7.3 (default, Oct 4 2012, 15:15:08) [MSC v.1600 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> from abaqus import * Traceback (most recent call last): File "<stdin>", line 1, in <module> File "D:\SIMULIA\Abaqus\6.14-4\tools\SMApy\python2.7\lib\site-packages\abaqus.py", line 10, in <module> import sys, i18n, os, osutils File "D:\SIMULIA\Abaqus\6.14-4\tools\SMApy\python2.7\lib\site-packages\i18n.py", line 6, in <module> import os, os.path, sys, uti, traceback, locale as _locale File "D:\SIMULIA\Abaqus\6.14-4\tools\SMApy\python2.7\lib\site-packages\uti.py", line 9, in <module> import utiinternal File "SMAPyaModules\SMAPyaUtiPy.m\src\utiinternal.py", line 52, in <module> File "SMAPyaModules\SMAPyaUtiPy.m\src\uticty.py", line 145, in <module> File "SMAPyaModules\SMAPyaUtiPy.m\src\uticty.py", line 136, in _loadAbaqusDll ValueError: dll not found: ABQSMABasShared.dll
報錯找不到DLL。這就進入了正題了,python有時候被稱爲膠水語言,正式由於它簡潔的語法又可以調用不一樣語言所編寫的程序,達到了性能和易於編程的雙重目的。通常運行程序都會在當前目錄和庫目錄查找dll文件,咱們搜一下abaqus的安裝目錄,發現找不到的dll文件在這裏D:\SIMULIA\Abaqus\6.14-4\code\bin,因而咱們將其添加到環境變量(這裏使用的是powershell命令)後再運行:git
PS D:\SIMULIA\Abaqus\6.14-4\tools\SMApy\python2.7> $env:PATH=$env:PATH+";D:\SIMULIA\Abaqus\6.14-4\code\bin" PS D:\SIMULIA\Abaqus\6.14-4\tools\SMApy\python2.7> .\python.exe Python 2.7.3 (default, Oct 4 2012, 15:15:08) [MSC v.1600 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> from abaqus import * Traceback (most recent call last): File "<stdin>", line 1, in <module> File "D:\SIMULIA\Abaqus\6.14-4\tools\SMApy\python2.7\lib\site-packages\abaqus.py", line 10, in <module> File "D:\SIMULIA\Abaqus\6.14-4\tools\SMApy\python2.7\lib\site-packages\i18n.py", line 111, in <module> NameError: name 'locale' is not defined >>>
即便添加了環境變量、不報錯找不到DLL後,仍然報錯。github
有的網友還遇到了最尷尬的問題,報錯:shell
ImportError: abaqus module may only be imported in the Abaqus kernel process
abaqus將其內部的調用機制所有封裝在了abaqus.bat這個運行源頭上。若是安裝abaqus添加了環境變量的話,會發現只有使用abaqus cae -script zigzag.py這樣的命令才能正確運行abaqus python文件。其中-noGUI還可提供只生成cae文件不打開abaqus主界面的選項。編程
若是咱們僅僅須要編輯abaqus python,用它提供的abaqus PDE就行了,那麼咱們爲何想用pycharm呢?固然是但願使用它強大的類型檢查、代碼補全功能。由於最終只能調用abaqus命令來運行,因此咱們就製做了這麼一個「代理·abaqus類庫」,庫中全部引用文件都只提供類型檢查而不提供真正的可執行語句,當用戶最後save的時候,纔去調用abaqus主程序。爲了使得類庫對原有代碼的衝擊最小,咱們使用環境變量來獲取abaqus主程序的目錄。該項目地址在這裏https://github.com/liangzulin/abaqus_pycharm。windows
只須要將該項目中的import_files文件夾中的文件,拷貝到相應python類庫的site-packages文件夾裏邊就能夠了。bash
須要設置一下abaqus環境變量,例如你安裝的abaqus在D:\SIMULIA\Abaqus\,那麼須要在代碼最前面添加2行:session
from os import environ from abaqus import * from abaqusConstants import * from caeModules import mesh from driverUtils import executeOnCaeStartup # ====================== 添加這兩行 ========================= environ['ABAQUS_BAT_PATH'] = 'D:\\SIMULIA\\Abaqus\\Commands\\abaqus' environ['ABAQUS_BAT_SETTING'] = 'noGUI' session.Viewport(name='Viewport: 1', origin=(0.0, 0.0), width=300, height=140) session.viewports['Viewport: 1'].makeCurrent() session.viewports['Viewport: 1'].maximize()
餘下的程序就正常編寫就OK。python2.7