ueffel / Keypirinha-Time

Provides command to convert and format datetime strings
MIT License
14 stars 0 forks source link

Does not install via PackageControl #3

Closed SturmB closed 4 years ago

SturmB commented 4 years ago

I attempted to install this via PackageControl but was greeted with the following in Keypirinha's console:

10:19:50.305 PackageControl.PackageControl: Installed package 'Keypirinha-Time'
10:19:51.833 Python: Traceback (most recent call last):
10:19:51.833 Python:   File "keypirinha_private.py", line 356, in reload_module
10:19:51.833 Python:   File "lib\importlib\__init__.py", line 126, in import_module
10:19:51.833 Python:   File "<frozen importlib._bootstrap>", line 994, in _gcd_import
10:19:51.833 Python:   File "<frozen importlib._bootstrap>", line 971, in _find_and_load
10:19:51.833 Python:   File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
10:19:51.833 Python:   File "<frozen importlib._bootstrap>", line 656, in _load_unlocked
10:19:51.833 Python:   File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible
10:19:51.833 Python:   File "keypirinha_private.py", line 246, in load_module
10:19:51.833 Python:   File "C:\Keypirinha\portable\Profile\InstalledPackages\Time.keypirinha-package\time.py", line 14, in <module>
10:19:51.833 Python:   File "<frozen importlib._bootstrap>", line 971, in _find_and_load
10:19:51.833 Python:   File "<frozen importlib._bootstrap>", line 951, in _find_and_load_unlocked
10:19:51.833 Python:   File "<frozen importlib._bootstrap>", line 894, in _find_spec
10:19:51.833 Python:   File "<frozen importlib._bootstrap_external>", line 1157, in find_spec
10:19:51.833 Python:   File "<frozen importlib._bootstrap_external>", line 1131, in _get_spec
10:19:51.834 Python:   File "<frozen importlib._bootstrap_external>", line 1112, in _legacy_get_spec
10:19:51.834 Python:   File "<frozen importlib._bootstrap>", line 441, in spec_from_loader
10:19:51.834 Python:   File "<frozen importlib._bootstrap_external>", line 544, in spec_from_file_location
10:19:51.834 Python: FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Keypirinha\\portable\\Profile\\InstalledPackages\\Fakerdata.keypirinha-package'
ueffel commented 4 years ago

A restart of keypirinha should fix the issue.

Did you install and deinstall https://github.com/Fuhrmann/keypirinha-faker-data before you tried to install this package by any chance? This is how I can reproduce you issue. The Fakerdata package tries to import the dateutil library from within its own package, but the package is missing the six library, so this error occurs:

2020-02-17 18:34:12.875 [i] PackageControl.PackageControl: Installed package 'keypirinha-faker-data'
2020-02-17 18:34:14.488 [i] Python: Traceback (most recent call last):
2020-02-17 18:34:14.488 [i] Python:   File "keypirinha_private.py", line 356, in reload_module
2020-02-17 18:34:14.488 [i] Python:   File "lib\importlib\__init__.py", line 126, in import_module
2020-02-17 18:34:14.488 [i] Python:   File "<frozen importlib._bootstrap>", line 994, in _gcd_import
2020-02-17 18:34:14.488 [i] Python:   File "<frozen importlib._bootstrap>", line 971, in _find_and_load
2020-02-17 18:34:14.488 [i] Python:   File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
2020-02-17 18:34:14.488 [i] Python:   File "<frozen importlib._bootstrap>", line 656, in _load_unlocked
2020-02-17 18:34:14.488 [i] Python:   File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible
2020-02-17 18:34:14.488 [i] Python:   File "keypirinha_private.py", line 246, in load_module
2020-02-17 18:34:14.488 [i] Python:   File "R:\tmp\Keypirinha\portable\Profile\InstalledPackages\Fakerdata.keypirinha-package\fakerdata.py", line 11, in <module>
2020-02-17 18:34:14.488 [i] Python:   File "R:\tmp\Keypirinha\portable\Profile\InstalledPackages\Fakerdata.keypirinha-package\lib\faker\__init__.py", line 4, in <module>
2020-02-17 18:34:14.488 [i] Python:     from faker.factory import Factory
2020-02-17 18:34:14.488 [i] Python:   File "R:\tmp\Keypirinha\portable\Profile\InstalledPackages\Fakerdata.keypirinha-package\lib\faker\factory.py", line 10, in <module>
2020-02-17 18:34:14.488 [i] Python:     from faker.config import DEFAULT_LOCALE, PROVIDERS, AVAILABLE_LOCALES
2020-02-17 18:34:14.488 [i] Python:   File "R:\tmp\Keypirinha\portable\Profile\InstalledPackages\Fakerdata.keypirinha-package\lib\faker\config.py", line 14, in <module>
2020-02-17 18:34:14.488 [i] Python:     AVAILABLE_LOCALES = find_available_locales(PROVIDERS)
2020-02-17 18:34:14.488 [i] Python:   File "R:\tmp\Keypirinha\portable\Profile\InstalledPackages\Fakerdata.keypirinha-package\lib\faker\utils\loading.py", line 32, in find_available_locales
2020-02-17 18:34:14.488 [i] Python:     provider_module = import_module(provider_path)
2020-02-17 18:34:14.488 [i] Python:   File "lib\importlib\__init__.py", line 126, in import_module
2020-02-17 18:34:14.488 [i] Python:   File "R:\tmp\Keypirinha\portable\Profile\InstalledPackages\Fakerdata.keypirinha-package\lib\faker\providers\address\__init__.py", line 6, in <module>
2020-02-17 18:34:14.488 [i] Python:     from .. import date_time
2020-02-17 18:34:14.488 [i] Python:   File "R:\tmp\Keypirinha\portable\Profile\InstalledPackages\Fakerdata.keypirinha-package\lib\faker\providers\date_time\__init__.py", line 11, in <module>
2020-02-17 18:34:14.488 [i] Python:     from dateutil import relativedelta
2020-02-17 18:34:14.488 [i] Python:   File "R:\tmp\Keypirinha\portable\Profile\InstalledPackages\Fakerdata.keypirinha-package\lib\dateutil\relativedelta.py", line 8, in <module>
2020-02-17 18:34:14.488 [i] Python:     from six import integer_types
2020-02-17 18:34:14.488 [i] Python: ModuleNotFoundError: No module named 'six'

Deinstalling fakerdata removes the package. But even though the fakerdata plugin itself is unloaded, its imports are not. Keypirinha-Time also uses the dateutil library. When it tries to import dateutil it finds the already partly loaded dateutil from fakerdata, which I think causes your error:

2020-02-17 18:34:22.122 [i] PackageControl.PackageControl: Removed package: keypirinha-faker-data
2020-02-17 18:34:23.621 [i] Unloaded package: Fakerdata
2020-02-17 18:34:30.571 [i] PackageControl.PackageControl: Installed package 'Keypirinha-Time'
2020-02-17 18:34:32.083 [i] Python: Traceback (most recent call last):
2020-02-17 18:34:32.083 [i] Python:   File "keypirinha_private.py", line 356, in reload_module
2020-02-17 18:34:32.083 [i] Python:   File "lib\importlib\__init__.py", line 126, in import_module
2020-02-17 18:34:32.083 [i] Python:   File "<frozen importlib._bootstrap>", line 994, in _gcd_import
2020-02-17 18:34:32.083 [i] Python:   File "<frozen importlib._bootstrap>", line 971, in _find_and_load
2020-02-17 18:34:32.083 [i] Python:   File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
2020-02-17 18:34:32.083 [i] Python:   File "<frozen importlib._bootstrap>", line 656, in _load_unlocked
2020-02-17 18:34:32.083 [i] Python:   File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible
2020-02-17 18:34:32.083 [i] Python:   File "keypirinha_private.py", line 246, in load_module
2020-02-17 18:34:32.083 [i] Python:   File "R:\tmp\Keypirinha\portable\Profile\InstalledPackages\Time.keypirinha-package\time.py", line 14, in <module>
2020-02-17 18:34:32.083 [i] Python:   File "<frozen importlib._bootstrap>", line 971, in _find_and_load
2020-02-17 18:34:32.083 [i] Python:   File "<frozen importlib._bootstrap>", line 951, in _find_and_load_unlocked
2020-02-17 18:34:32.084 [i] Python:   File "<frozen importlib._bootstrap>", line 894, in _find_spec
2020-02-17 18:34:32.084 [i] Python:   File "<frozen importlib._bootstrap_external>", line 1157, in find_spec
2020-02-17 18:34:32.084 [i] Python:   File "<frozen importlib._bootstrap_external>", line 1131, in _get_spec
2020-02-17 18:34:32.084 [i] Python:   File "<frozen importlib._bootstrap_external>", line 1112, in _legacy_get_spec
2020-02-17 18:34:32.084 [i] Python:   File "<frozen importlib._bootstrap>", line 441, in spec_from_loader
2020-02-17 18:34:32.084 [i] Python:   File "<frozen importlib._bootstrap_external>", line 544, in spec_from_file_location
2020-02-17 18:34:32.084 [i] Python: FileNotFoundError: [Errno 2] No such file or directory: 'R:\\tmp\\Keypirinha\\portable\\Profile\\InstalledPackages\\Fakerdata.keypirinha-package'

Funfact: Installing Keypirinha-Time first, then installing Fakerdata should work until the next restart of keypirinha because Time loads dateutil correctly, so Fakerdata can use it. But after a restart of keypirinha packages are loaded alphabetically so Time is loaded after Fakerdata.

Let me know if restarting keypirinha without Fakerdata installed helps :)

SturmB commented 4 years ago

You nailed it. 🌟

I was going through the list of Keypirinha plugins in alphabetical order and installing the ones that I thought might be useful. As you noted, I ran into the Fakerdata issue, which I've already reported on the dev's repo.

For now, I'll just refrain from installing keypirinha-faker-data until they can fix the error so I can use Keypirinha-Time. (Fakerdata isn't as important to me right now. 😉)

Thanks for taking the time to discover the underlying issue here, I greatly appreciate it!