Python Import Error with Houdini submitter


#1

Seeing the following error when opening the ‘Submit to Deadline’ dialog in Houdini. Also appears with the Deadline Rop when selecting ‘machine list’, ‘limits’ etc

Error: ImportError : Module use of python3.dll conflicts with this version of Python. (FranticX.Scripting.PythonNetException)

This popup dialog is also shown:

C:\Anaconda3 does not exist on my machine and Anaconda is not installed.
I do have Python36 Installed. PYTHONPATH points to 1 location which contains some shared Python27 libs. I’ve tried reinstalling the Deadline Client and Houdini Submitter.

This error is not present on another machine which has submitter installed

Any help is appreciated


#2

I’m also seeing a similar error with the Nuke submitter when hitting ‘Browse’ on Machine List

Error: ImportError : DLL load failed: The specified module could not be found. (FranticX.Scripting.PythonNetException)


#3

Bump… ////////////////


#4

Hey Aeoll,

Sorry for the slow response here. Can you provide the following?

echo %PATH%
echo %PYTHONPATH%
python --version

What version of Deadline 10 do you currently have installed?


#5

Hi,

we’re using Deadline 10.0.22.3

python --version:
3.6.5

%PATH%:
quite a bit in here - if it’s all needed I can email directly. I think the only relevant paths would be:
C:\Python36
C:\Python36\Scripts

%PYTHONPATH%:
Z:\Resources\Utils\python
(just 1 entry - a server location)

The machine without the error probably doesn’t have Python3 installed - I will check tomorrow.


#6

Hmm. It seems like the library loader on Windows is pulling in some other version of Python.

We’ve seen this in the past with Qt where a number of libraries were littered into “C:\Windows\System32”.

I’m going to go and try breaking my install by copying some Python3 dlls into System32. Can you do the inverse and check to see if there are any Python-related libraries in that path? According to this KB article the search path order is:

  1. The directory from which the application loaded.
  2. The directory specified by the lpPathName parameter of SetDllDirectory . (unused by Deadline AFAIK)
  3. The system directory. Use the GetSystemDirectory function to get the path of this directory. The name of this directory is System32.
  4. The 16-bit system directory. There is no function that obtains the path of this directory, but it is searched. The name of this directory is System.
  5. The Windows directory. Use the GetWindowsDirectory function to get the path of this directory.
  6. The directories that are listed in the PATH environment variable. Note that this does not include the per-application path specified by the App Paths registry key. The App Paths key is not used when computing the DLL search path.

Update: No luck trying to kill it just from copying DLLs. Can you also try running this from the command line:

"c:\Program Files\Thinkbox\Deadline10\bin\deadlinecommand" selectmachinelist

I’m curious if it dies outside of Houdini/Nuke.


#7

Running deadlinecommand from cmd does fail as well

When you mentioned Qt I thought it may be caused by a copy of PySide I have in my PYTHONPATH, but removing this hasn’t fixed things.
Not quite sure what sort of dll’s I’m looking for - nothing obvious showed up?

Fortunately I am still able to submit to Deadline so it’s not a critical issue.
I am curious as to what’s causing it on 2 of our machines though (My current and previous PCs - must be me…!)


#8

Yeah, I’m not sure either here… I played around with pywin32 and GetDllDirectory() and it turns out it’s empty by default. I could dig deeper into finding what libraries are being chosen but I’ve exhausted my time budget for that now.

Considering the Monitor starts up it’s not a build-time or configuration problem as they’ll be loading the same Python interpreter. The fact that it’s happening outside of Nuke and Houdini also means it’s not part of their environment.

Just for fun, what happens if you clear PYTHONPATH before running deadlinecommand? We’re supposed to be ignoring that variable these days and using only our own location for everything.