How to run a module before install?

jfong at ms4.hinet.net jfong at ms4.hinet.net
Mon Jan 14 04:18:23 EST 2019


Peter Otten於 2019年1月14日星期一 UTC+8下午4時04分33秒寫道:
> jfong at ms4.hinet.net wrote:
> 
> > I had download a module which has the following directory structure:
> > 
> > [XL-Sudoku-Solver_master]
> >   |__[tests]
> >   |__[xl_sudoku_solver]
> >   |__setup.py       |__ __init__.py
> >   |__problem1.txt   |__ __main__.py
> >   |__README.md      |__ ...
> >   |__ ...
> > 
> > The setup.py file has something like this:
> > ---------------------
> > ...
> > setup(
> >     name="xl-sudoku-solver",
> >     version="0.0.1.post3",
> >     packages=['xl_sudoku_solver'],
> >     entry_points={
> >         "console_scripts": [
> >             "xl-sudoku-solver = xl_sudoku_solver.__main__:main"
> >         ]
> >     },
> > ...
> > ----------------
> > 
> > and the __main__.py has:
> > ----------------
> > ...
> > from . import Solver, load_from_file, load_from_input, load_from_string
> > 
> > def main():
> >     ...
> > 
> > if __name__ == '__main__':
> >     main()
> > ----------------
> > 
> > The README.md suggest the way of running it:
> > 
> > pip install xl-sudoku-solver
> > $ xl-sudoku-solver --time -f problem1.txt
> > 
> > But I like to run it before install. Is it possible? and how? I had try
> > two ways below but niether works:
> > 
> > 1) h:\Temp\XL-Sudoku-Solver-master>py xl_sudoku_solver --time -f
> > problem1.txt Traceback (most recent call last):
> >   File "C:\Python34\lib\runpy.py", line 170, in _run_module_as_main
> >     "__main__", mod_spec)
> >   File "C:\Python34\lib\runpy.py", line 85, in _run_code
> >     exec(code, run_globals)
> >   File "xl_sudoku_solver\__main__.py", line 5, in <module>
> >     from . import Solver, load_from_file, load_from_input,
> >     load_from_string
> > SystemError: Parent module '' not loaded, cannot perform relative import
> > 
> > 2) h:\Temp\XL-Sudoku-Solver-master>py
> > Python 3.4.4 (v3.4.4:737efcadf5a6, Dec 20 2015, 19:28:18) [MSC v.1600 32
> > bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for
> > more information.
> >>>> import xl_sudoku_solver
> >>>>
> > 
> > Can't find the name "main", What to do?
> 
> With h:\Temp\XL-Sudoku-Solver-master as the current working directory try
> 
> h:\Temp\XL-Sudoku-Solver-master>py -m xl_sudoku_solver

Great! it works. Thank you, peter.

By the way, can you explain what these two command difference means? with or without a "-m". Or pointing where the document is. Thanks ahead:-)




More information about the Python-list mailing list