Hi Bruno,

i think there are two ways to solve this:

- find out how to make py.std work with cx_freeze
  (haven't looked at that myself yet)

- eliminate use of py.std in pytest and maybe py.  
  Personally, I am fine with a PR on that, probably 
  quite straightforward to do.

best,
Holger

  
On Wed, Jul 23, 2014 at 19:52 -0300, Bruno Oliveira wrote:
> Hi everyone,
> 
> I'm having trouble getting "pytest.main()" to run inside a frozen script
> created by cx_freeze (12-line source code here:
> https://gist.github.com/nicoddemus/5458ca3fc5241cedaff3); when I run the
> generated executable (I'm on windows), I get this exception:
> 
> Traceback (most recent call last):
>   File
> "X:\pytest_cx_freeze\.env27\lib\site-packages\cx_Freeze\initscripts\Console.py",
> line 27, in <module>
>     exec(code, m.__dict__)
>   File "runtests.py", line 1, in <module>
>     import pytest, sys
>   File "X:\pytest_cx_freeze\.env27\lib\site-packages\pytest.py", line 14,
> in <module>
>     from _pytest.config import main, UsageError, _preloadplugins, cmdline
>   File "X:\pytest_cx_freeze\.env27\lib\site-packages\_pytest\config.py",
> line 398, in <module>
>     class MyOptionParser(py.std.argparse.ArgumentParser):
>   File "X:\pytest_cx_freeze\.env27\lib\site-packages\py\_apipkg.py", line
> 124, in __makeattr
>     result = importobj(modpath, attrname)
>   File "X:\pytest_cx_freeze\.env27\lib\site-packages\py\_apipkg.py", line
> 47, in importobj
>     module = __import__(modpath, None, None, ['__doc__'])
> ImportError: No module named _std
> 
> 
> 
> I have tried to explicitly import "py._std" on my script, but it also fails:
> 
> 
>   File "X:\pytest_cx_freeze\.env27\lib\site-packages\_pytest\config.py",
> line 398, in <module>
>     class MyOptionParser(py.std.argparse.ArgumentParser):
>   File "X:\pytest_cx_freeze\.env27\lib\site-packages\py\_std.py", line 15,
> in __getattr__
>     raise AttributeError("py.std: could not import %s" % name)
> AttributeError: py.std: could not import argparse
> 
> 
> Looks like py's lazy import machinery can't be tracked by cx_freeze.
> 
> A google search didn't reveal anything useful so for far, unfortunately.
> Any thoughts?
> 
> Long story for those interested: we package our desktop applications as
> executables for both windows and linux using cx_freeze. Traditionally, we
> also pack the test runner into the executable in order to run the
> test suite using the packed code, with the test runner being activated by a
> `--selftest` flag. This ensures everything the application needs to run is
> correctly packed into the executable, and also enables us to write test
> scripts and hand them over to customers to run on their site in order to
> track a bug or to test something out.
> 
> Best Regards,
> Bruno.

> _______________________________________________
> Pytest-dev mailing list
> Pytest-dev@python.org
> https://mail.python.org/mailman/listinfo/pytest-dev

_______________________________________________
Pytest-dev mailing list
Pytest-dev@python.org
https://mail.python.org/mailman/listinfo/pytest-dev

Reply via email to