Running Plaxis from Pycharm

Hi,

Im trying to run my plaxis python code using Pycharm and as soon as the code reaches "import plxscripting.easy", Ill get ImportError:

"ImportError: cannot import name 'MutableMapping' from 'collections' (C:\Users\Farbod\AppData\Local\Programs\Python\Python310\lib\collections\__init__.py)"

I saw in another question that we need to change the python interpreter in pycharm and choose the one in plaxis directory. But when I do that, pycharm tells me that the interpreter Ive selected is invalid. 

I'm quite confused and I appreciate if you can point me in the right direction. 

Cheers

Parents
  • Dear Farbod,

    Indeed the error means that you do not have installed the module PLAXIS uses. You can do that with the information from this article: 
    https://communities.bentley.com/products/geotech-analysis/w/plaxis-soilvision-wiki/51822/how-to-install-additional-python-modules-in-plaxis

    I am also using PyCharm and I am pointing it to the PLAXIS Python Distribution we deliver. However, you need to make sure you pick the right one for the PLAXIS version you are using.

    You can find them in this folder: C:\ProgramData\Bentley\Geotechnical

    Make sure to pick the one that says: PLAXIS Python Distribution (not the PLAXIS Python Internal Distribution).

    Here's how it looks in my case, where I have picked the V22 and V21 Python distributions and a local one:

  • Hi Stefanos, 

    Amazing. That solved that issue. But now when I wanna run my code in PyCharm, I get the following error:

    Exception: Couldn't get AppServerPassword from command line arguments.

    This is the boilerplate Im using in my code:

    from plxscripting.easy import *
    import plxscripting.easy
    import math
    import weakref
    import win32api

    localhostport_input = 10000
    localhostport_output = 10001


    s_i, g_i = new_server('localhost', localhostport_input)
    s_o, g_o = new_server('localhost', localhostport_output)

    If I delete the last two lines, I will get the error "s_i not recognized".




    Also, if I change the last two lines to these:

    s_i, g_i = new_server('localhost', localhostport_input, password = 'password')
    s_o, g_o = new_server('localhost', localhostport_output, password = 'password')

    I will get the error below when I execute the s_i.new() command:

    plxscripting.plx_scripting_exceptions.PlxScriptingError: The server failed to decrypt the request. This probably means the password on the client does not match the one on the server.






    Is there any other boilerplate code I should use?

    Thank you very much again,

    Cheers,

  • Dear Farbod,

    Great that it helped!

    Indeed you are missing the password parameter in the new_server function.

    The boilerplate is:

    from plxscripting.easy import *
    s_i, g_i = new_server('localhost', 10000, password='yourpassword')

    You can find this here: communities.bentley.com/.../using-plaxis-remote-scripting-with-the-python-wrapper

  • Thank you for the reply Stefanos. I really appreciate your help. 

    But as I mentioned in my previous comment, when I use this code:

    from plxscripting.easy import *

    localhostport_input = 10000
    localhostport_output = 10001

    s_i, g_i = new_server('localhost', 10000, password='YourPassword')
    s_o, g_o = new_server('localhost', localhostport_output, password='YourPassword')



    It leads to the following error:
    plxscripting.requests.exceptions.ConnectionError: HTTPConnectionPool(host='192.168.12.12', port=10000): Max retries exceeded with url: /environment (Caused by <class 'TimeoutError'>:
    [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond)



    The only way I can get it to work, is to manually start the server with the same password and same port from
    Plaxis and then run this code.

    Is there any way to run this code without having to manually starting the server from Plaxis?

    Thank you very much again,

    Farbod
Reply
  • Thank you for the reply Stefanos. I really appreciate your help. 

    But as I mentioned in my previous comment, when I use this code:

    from plxscripting.easy import *

    localhostport_input = 10000
    localhostport_output = 10001

    s_i, g_i = new_server('localhost', 10000, password='YourPassword')
    s_o, g_o = new_server('localhost', localhostport_output, password='YourPassword')



    It leads to the following error:
    plxscripting.requests.exceptions.ConnectionError: HTTPConnectionPool(host='192.168.12.12', port=10000): Max retries exceeded with url: /environment (Caused by <class 'TimeoutError'>:
    [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond)



    The only way I can get it to work, is to manually start the server with the same password and same port from
    Plaxis and then run this code.

    Is there any way to run this code without having to manually starting the server from Plaxis?

    Thank you very much again,

    Farbod
Children