Getting `assert parent.command_path == "streamlit` with streamlit:1.0.5

Hi Team,

I have been using streamlit the following way and unfortunately with streamlit:1.0.5 the below wont work anymore :frowning: :frowning:

import re
import sys
from streamlit.cli import main

def launch():
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())
def command_to_run(self):
    return [self.script_path('streamlit'), 'run', os.path.join(os.path.dirname(__file__), 'app.py'), '--server.port', '7032', '--server.headless', 'True']

I know this is a non-standard way, but was done this because our dev setup cannot directly invoke streamlit via shell.

I would like to get some help on how I can continue running with streamlit:1.0.5

Bumping this up^

Bumping this up again ^

@andfanilo sorry to direct tag, but can some one from steamlit core, take a look at this.

## somescript.py
import re
import sys
from streamlit.cli import main

def launch():
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

def command_to_run(self):
    return [self.script_path('streamlit'), 'run', os.path.join(os.path.dirname(__file__), 'app.py'), '--server.port', '7032', '--server.headless', 'True']

@Jacob_Lukose how do you run the above script from a terminal by the way? What arguments do you pass?

1 Like

Hi @snehankekre

We are not starting streamlit from the terminal and hence is not using the streamlit CLI. We are starting it by directly referring to the main() fn in streamlit.cli. So we have a specific way of packaging python apps. It is all kept under a boilerplate.

import re
import sys
from streamlit.cli import main

def launch():
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

Whole python code gets packaged and entry point will the above, which is accessible as self.script_path('streamlit')

And the below function can be used to invoke it. So basically streamlit gets started on calling the fn below:

def command_to_run(self):
    return [self.script_path('streamlit'), 'run', os.path.join(os.path.dirname(__file__), 'app.py'), '--server.port', '7032', '--server.headless', 'True']

Code snippets are part of 2 separate files and called at different stages.

Let me know if this clarifies.

Thankyou for replying! We have some heavy use cases where we are leveraging streamlit and would like to try out the newer streamlit versions :)!

@snehankekre ping

Iā€™m still not certain how to run any of the above scripts on my end. Could you share a minimal example we can reproduce on our end? i.e., reproducible examples of the 2 separate files and how to call them.

Note: PR #4408 renamed script_path to main_script_path.

1 Like

Hi @snehankekre sorry for late reply, missed out from my radar.

I am not sure if you will be able to reproduce the way in which I am calling streamlit, since this is due to the kind of packaging of python apps on our side. But let me see.

Will reply back ASAP