Skip to content

Conversation

@hyperknot
Copy link

First try at Pipfile support and caching of python_interpreter, extra_paths settings in a dict.

@hyperknot
Copy link
Author

hyperknot commented Oct 27, 2017

Updated with smarter caching, also implements the functionality of what ENVIRON_HOOK_INVALID did before.

@DamnWidget
Copy link
Owner

If the interpreter configuration gets cached, how is the plugin gonna stop the running JsonServer and start a\ new one for the configured interpreter if the user changes it? This will force users to reopen their ST3 in order to update interpreter or path related options.

Maybe we should use the add_on_change method from the Settings class https://www.sublimetext.com/docs/3/api_reference.html#sublime.Settings

Apart from that, I am pretty sure that we could be able to hook into pipenv as a library and don't use subprocess in order to check the path. Let me think about this for a while.

@hyperknot
Copy link
Author

But why would anyone change their interpreter settings while having an open session? Actually why would anyone change interpreter settings at all? There is just one interpreter per project, it actually never changes.

We can absolutely use pipenv without subprocess but that'd mean including quite a lot of dependencies (about 20 MB right now):

pipenv==8.2.7
  - flake8 [required: Any, installed: 3.5.0]
    - mccabe [required: >=0.6.0,<0.7.0, installed: 0.6.1]
    - pycodestyle [required: <2.4.0,>=2.0.0, installed: 2.3.1]
    - pyflakes [required: <1.7.0,>=1.5.0, installed: 1.6.0]
  - pew [required: >=0.1.26, installed: 1.1.0]
    - setuptools [required: >=17.1, installed: 36.6.0]
    - virtualenv [required: >=1.11, installed: 15.1.0]
    - virtualenv-clone [required: >=0.2.5, installed: 0.2.6]
  - pip [required: >=9.0.1, installed: 9.0.1]
  - requests [required: >2.18.0, installed: 2.18.4]
    - certifi [required: >=2017.4.17, installed: 2017.7.27.1]
    - chardet [required: >=3.0.2,<3.1.0, installed: 3.0.4]
    - idna [required: <2.7,>=2.5, installed: 2.6]
    - urllib3 [required: >=1.21.1,<1.23, installed: 1.22]
  - urllib3 [required: >=1.21.1, installed: 1.22]
  - virtualenv [required: Any, installed: 15.1.0]

@DamnWidget
Copy link
Owner

DamnWidget commented Oct 27, 2017

You can open another project during the same session, I do it all the time

@hyperknot
Copy link
Author

But my solutions is caching it per view, so each project would naturally have it's own value.

@hyperknot
Copy link
Author

hyperknot commented Oct 27, 2017

Also, there should really be only one subprocess per pipfile, this just needs to be fixed:
https://github.com/kennethreitz/pipenv/issues/985

@hyperknot
Copy link
Author

hyperknot commented Oct 27, 2017

I think the reference implementation for finding out virtualenv's location should be part of Pipfile specs.
pypa/pipfile#88

@asfaltboy
Copy link

asfaltboy commented Nov 11, 2017

I love the idea of this PR in general, but I would take a different approach to implementation, separating the pipenv functionality from the core functions of Anaconda.

Perhaps we can start with just adding a few useful commands:

  • pipenv: configure env path: find the pipenv virtualenv path and add it to project settings (prompting to overwrite if the key exists)?
  • pipenv: install a package: prompt to install new packages (single or list of comma/space separated packages) into the env.
  • pipenv: install: install all the packages in the Pipfile.

I'm going to experiment and if it looks good I'll submit a good PR. @

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants