xtreemfs_client issueshttps://git.zib.de/bzcseibe/xtreemfs_client/-/issues2017-12-01T18:52:04+01:00https://git.zib.de/bzcseibe/xtreemfs_client/-/issues/2Tests do not run due to absolute import of OSDManager.2017-12-01T18:52:04+01:00Ghost UserTests do not run due to absolute import of OSDManager.I installed xtreemfs_client via setup.py. So `from xtreemfs_client.OSDManager` import OSDManager works.
However, if I try to run the tests on my machine the following exception is raised:
```python
Error
Traceback (most recent call las...I installed xtreemfs_client via setup.py. So `from xtreemfs_client.OSDManager` import OSDManager works.
However, if I try to run the tests on my machine the following exception is raised:
```python
Error
Traceback (most recent call last):
File "/home/gfz-fe/python_GFZ/python/lib/python3.6/unittest/case.py", line 59, in testPartExecutor
yield
File "/home/gfz-fe/python_GFZ/python/lib/python3.6/unittest/case.py", line 601, in run
testMethod()
File "/home/gfz-fe/python_GFZ/python/lib/python3.6/site-packages/nose/failure.py", line 39, in runTest
raise self.exc_val.with_traceback(self.tb)
File "/home/gfz-fe/python_GFZ/python/lib/python3.6/site-packages/nose/loader.py", line 417, in loadTestsFromName
addr.filename, addr.module)
File "/home/gfz-fe/python_GFZ/python/lib/python3.6/site-packages/nose/importer.py", line 47, in importFromPath
return self.importFromDir(dir_path, fqname)
File "/home/gfz-fe/python_GFZ/python/lib/python3.6/site-packages/nose/importer.py", line 94, in importFromDir
mod = load_module(part_fqname, fh, filename, desc)
File "/home/gfz-fe/python_GFZ/python/lib/python3.6/imp.py", line 234, in load_module
return load_source(name, filename, file)
File "/home/gfz-fe/python_GFZ/python/lib/python3.6/imp.py", line 172, in load_source
module = _load(spec)
File "<frozen importlib._bootstrap>", line 675, in _load
File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
File "/home/gfz-fe/scheffler/python/xtreemfs_client/tests/test_xtreemfs_client.py", line 6, in <module>
import OSDManager
ModuleNotFoundError: No module named 'OSDManager'
E
======================================================================
ERROR: Failure: ModuleNotFoundError (No module named 'OSDManager')
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/gfz-fe/python_GFZ/python/lib/python3.6/site-packages/nose/failure.py", line 39, in runTest
raise self.exc_val.with_traceback(self.tb)
File "/home/gfz-fe/python_GFZ/python/lib/python3.6/site-packages/nose/loader.py", line 417, in loadTestsFromName
addr.filename, addr.module)
File "/home/gfz-fe/python_GFZ/python/lib/python3.6/site-packages/nose/importer.py", line 47, in importFromPath
return self.importFromDir(dir_path, fqname)
File "/home/gfz-fe/python_GFZ/python/lib/python3.6/site-packages/nose/importer.py", line 94, in importFromDir
mod = load_module(part_fqname, fh, filename, desc)
File "/home/gfz-fe/python_GFZ/python/lib/python3.6/imp.py", line 234, in load_module
return load_source(name, filename, file)
File "/home/gfz-fe/python_GFZ/python/lib/python3.6/imp.py", line 172, in load_source
module = _load(spec)
File "<frozen importlib._bootstrap>", line 675, in _load
File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
File "/home/gfz-fe/scheffler/python/xtreemfs_client/tests/test_xtreemfs_client.py", line 6, in <module>
import OSDManager
ModuleNotFoundError: No module named 'OSDManager'
----------------------------------------------------------------------
Ran 1 test in 0.013s
FAILED (errors=1)
```
This is because you use an absolute import to import OSDManager:
```python
import OSDManager
import div_util
import verify
```
Since '.../site-packages/xtreemfs_client/' is not in my PATH but only '.../site-packages/', Python cannot find it.
One solution could be to replace your imports with:
```python
from xtreemfs_client.OSDManager import OSDManager
from xtreemfs_client import div_util
from xtreemfs_client import verify
```https://git.zib.de/bzcseibe/xtreemfs_client/-/issues/4Don´t leave filehandles open2017-11-23T15:22:38+01:00Ghost UserDon´t leave filehandles openI just stumbled upon this:
```python
def __write_configuration(self):
path_to_config = os.path.join(self.managedFolder, self.configFile)
f = open(path_to_config, "wb")
pickle.dump(self.distribution, f)
```
...I just stumbled upon this:
```python
def __write_configuration(self):
path_to_config = os.path.join(self.managedFolder, self.configFile)
f = open(path_to_config, "wb")
pickle.dump(self.distribution, f)
```
See https://stackoverflow.com/questions/2404430/does-filehandle-get-closed-automatically-in-python-after-it-goes-out-of-scopehttps://git.zib.de/bzcseibe/xtreemfs_client/-/issues/1OSD Manager is not importable2017-07-19T16:53:12+02:00Ghost UserOSD Manager is not importable```
import xtreemfs_client # works
from xtreemfs_client.xOSDManager import OSDManager # raises the error below
```
```python
---------------------------------------------------------------------------
ModuleNotFoundError ...```
import xtreemfs_client # works
from xtreemfs_client.xOSDManager import OSDManager # raises the error below
```
```python
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-42-c3afeca28937> in <module>()
1 import xtreemfs_client
----> 2 from xtreemfs_client.xOSDManager import OSDManager
/home/gfz-fe/scheffler/python/xtreemfs_client/xtreemfs_client/xOSDManager.py in <module>()
5 import shutil
6
----> 7 import dataDistribution
8 import div_util
9 import folder
ModuleNotFoundError: No module named 'dataDistribution'
```
Solution: Use relative imports within you module:
instead of
```python
import dataDistribution
import div_util
import folder
```
use
```python
from . import dataDistribution
from . import div_util
from . import folder
```